rake assets precompile失败

5
当我运行bundle exec rake assets:precompile --trace时,我的预编译失败了,但我无法找到具体的原因。你可以查看这个pastebin链接查看我的输出:http://pastebin.com/zggZyPyM

你是否已经安装了JavaScript运行时?本周我在尝试在Linux虚拟机上预编译资源时遇到了类似的错误。 - Zajn
1
如果 zajn 的建议行不通,你应该检查一下系统日志。预编译资产需要大量内存(比 "rails s" 更多),可能会导致操作系统杀死该进程。 - rubish
啊!@rubish 你说得对... 内存不足了。 - jasonlfunk
@jasonlfunk 已发布答案,请接受。 - rubish
3个回答

13

预编译资源需要大量内存。在我的情况下大约是400MB。由于内存使用过度,操作系统可能会终止该进程。您可以检查 syslog 来验证是否出现这种情况。

您可以增加服务器的内存以避免出现这种情况。如果不可能增加内存,我建议您在本地系统上预编译资产,将其提交到仓库并部署到服务器。这样您就不必在服务器上编译资产。但是您可能需要考虑一些方法来删除以前生成的资产,并自动化这个过程。


2

但问题已经解决了。我首先尝试安装了node.js,然后运行了以下命令bundle exec rake assets:precompile,然后才发现没有错误。

最初,我认为这可能是由于内存不足导致的。关闭了几乎所有正在运行的应用程序,但无法找到解决方案。此外,我以管理员身份打开了Ruby。不确定是否有所帮助,但问题得到了解决。


在Windows上安装Node.js解决了我的问题。顺便提一下,这个页面(http://ajacevedo.com/2013/using-node-js-as-a-rails-javascript-runtime/)提供了有关设置环境以使用Node.js的好信息。 - konyak

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接