当我运行bundle exec rake assets:precompile --trace
时,我的预编译失败了,但我看不出任何具体原因。
请参阅此pastebin以获取我的输出:http://pastebin.com/zggZyPyM
答案 0 :(得分:13)
预编译资产需要大量内存。在我的情况下〜= 400mb。由于过多的内存使用,操作系统可能会杀死该进程。您可以检查syslog以验证是否是这种情况。
您可以增加服务器的内存以避免这种情况。如果那是不可能的,我建议您在本地系统上预编译资产,将它们提交到repo并部署到服务器。这样您就不必在服务器上编译资产了。但是,您可能希望以某种方式研究删除以前生成的资产的方法,并自动执行该过程。
答案 1 :(得分:2)
,但问题已解决我尝试先安装node.js。然后,运行以下命令bundle exec rake assets:precompile
。只有这样我才注意到错误。
最初,我认为这是因为内存不足。清理了几乎所有正在运行的应用程序,但无法找到解决方案。另外,我以管理员身份打开了Ruby。不确定这是否也有帮助,但问题已得到解决。
答案 2 :(得分:0)
也可以通过使用node.js JS运行时来预处理资产,因为它显然具有较低的内存占用量,因此也可以解决此问题。对于Ubunutu 14.04,我需要运行apt-get install nodejs
,然后用Gemfile
替换gem 'node'
中的默认js运行时,运行bundle
,最后重新运行预编译。我会警告不要在另一个位置进行预编译,因为在css或js更改后你可能会忘记这样做,从而导致错误。