我最近放了一个Rails应用程序,我一直在研究Heroku。当我推送到我的Heroku git存储库时,它会运行资产编译作为生成slug的一部分。它失败了,出现以下错误:
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port xxxx?
问题是rake任务rake assets:precompile
正在尝试连接到数据库,而我的应用程序在slug编译期间无法访问配置变量。我在Heroku的troubleshooting documentation中找到了此信息,并在我的application.rb
文件中添加了规定的修复:
config.assets.initialize_on_precompile = false
现在我的资产被正确编译,我宝石的供应商/资产中的图像可用。
答案 0 :(得分:1)
该任务可能依赖于:environment
,这将加载整个应用程序,包括建立数据库连接的启动代码。
资产预编译的目的是改善请求时间 - rails不必在每次请求时编译资产。如果您在本地编译资产,则使用自己的计算机,这很可能比heroku环境更快。您可以轻松地使用钩子自动进行编译。
答案 1 :(得分:0)
config.initialize_on_precompile告诉rake是否在资产编译任务期间加载完整的rails应用程序,包括连接到数据库。至于在本地编译,不,这样做没有多大好处。