2012-06-28 184 views
5

当我运行bundle exec rake assets:precompile --trace时,我的预编译失败,但我看不到任何具体原因。耙子资产预编译失败

我的输出看到这个引擎收录:http://pastebin.com/zggZyPyM

+0

您是否安装了JavaScript运行时?当我尝试在linux虚拟机上预先编译资源时,本周我遇到了类似的错误。 – Zajn

+1

如果zajn的建议没有解决,你应该检查你的系统日志。预编译资产会占用大量内存(超过“rails s”),并且操作系统可能会因此而终止进程。 – rubish

+0

啊! @rubish你是对的......内存不足。 – jasonlfunk

回答

13

预编译的资产需要大量的内存。 〜= 400mb在我的情况。由于内存使用过多,操作系统可能会杀死该进程。您可以检查系统日志以验证情况是否如此。

您可以增加服务器的内存以避免出现这种情况。如果这是不可能的,我建议您在本地系统上预编译资产,将它们提交到回购站并部署到服务器。这样你就不必在服务器上编译资产。但是,您可能想要考虑以某种方式删除以前生成的资产并自动执行该过程。

2

,但问题已解决我试着先安装node.js。然后,运行以下命令bundle exec rake assets:precompile。只有这样我才没有注意到这个错误。

最初,我认为这是因为内存太少。几乎清理了所有正在运行的应用程序,但找不到解决方案。另外,我以管理员身份打开了Ruby。不知道这是否也有帮助,但问题已解决。

+0

在windows上安装Node.js为我解决了这个问题。仅供参考,这[页](http://ajacevedo.com/2013/using-node-js-as-a-rails-javascript-runtime/)有关于设置使用Node.js的良好信息 – konyak

+0

add bundle exec working为了我 – Feuda

0

此问题也可以通过使用node.js JS运行时预编译资产来解决,因为它显然具有较低的内存占用量。对于Ubunutu 14.04,我需要运行apt-get install nodejs,然后用gem 'node'替换Gemfile中的默认js运行时,运行bundle,最后重新运行预编译。我会告诫不要在另一个位置进行预编译,因为在css或js更改后您可能会忘记执行此操作,从而导致错误。