当我运行
bundle exec rake assets:precompile --trace
时,我的预编译失败了,但我无法找到具体的原因。你可以查看这个pastebin链接查看我的输出:http://pastebin.com/zggZyPyM
bundle exec rake assets:precompile --trace
时,我的预编译失败了,但我无法找到具体的原因。你可以查看这个pastebin链接查看我的输出:http://pastebin.com/zggZyPyM
预编译资源需要大量内存。在我的情况下大约是400MB。由于内存使用过度,操作系统可能会终止该进程。您可以检查 syslog 来验证是否出现这种情况。
您可以增加服务器的内存以避免出现这种情况。如果不可能增加内存,我建议您在本地系统上预编译资产,将其提交到仓库并部署到服务器。这样您就不必在服务器上编译资产。但是您可能需要考虑一些方法来删除以前生成的资产,并自动化这个过程。
但问题已经解决了。我首先尝试安装了node.js,然后运行了以下命令bundle exec rake assets:precompile
,然后才发现没有错误。
最初,我认为这可能是由于内存不足导致的。关闭了几乎所有正在运行的应用程序,但无法找到解决方案。此外,我以管理员身份打开了Ruby。不确定是否有所帮助,但问题得到了解决。
这个问题也可以通过使用node.js JS运行时来预编译资产来解决,因为它显然具有较低的内存占用。对于Ubuntu 14.04,我需要运行apt-get install nodejs
,然后将Gemfile
中的默认js运行时替换为gem'node'
,运行bundle
,最后重新运行预编译。我建议不要在另一个位置进行预编译,因为您可能会忘记在css或js更改后执行此操作,从而导致错误。