我在Rails 3.2.2上运行并在Cedar堆栈上部署。我仍然收到以下错误:
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
Running: rake assets:precompile
rake aborted!
could not connect to server: Connection refused
Is the server running on host "127.0.0.1" and accepting
TCP/IP connections on port 5432?
即使guide建议将config.assets.initialize_on_precompile
设置为false,但提及:
确保测试rake资产:在部署之前在本地进行预编译。它 可能会暴露您的资产引用应用程序对象的错误或 方法,因为它们仍处于开发模式的范围内,无论如何 这个标志的价值。
有些文章one建议使用Heroku labs。但即便如此,它还有其自身的含义,因为它仍处于测试阶段。
我在线阅读了其他几个来源,包括:
Rails 3.1 assets:precompile Connecting to Database
rake assets:precompile not working on heroku
所有都有不同的解决方案。那么避免这种错误的正确方法是什么?任何人都遇到Heroku实验室的任何重大问题?有更好的方法吗?
PS 即可。只是为了清楚。正在运行rake assets:precompile RAILS_ENV=development
或rake assets:precompile RAILS_ENV=production
正确的本地运行方式吗?
答案 0 :(得分:2)
问题源于您的应用程序在运行rake任务时尝试连接到postgres的事实。摆脱错误的唯一方法是阻止这种情况发生,或者使用你提到的user_env_compile
附加组件。
答案 1 :(得分:1)
(1)我总是按你的建议添加这个
config.assets.initialize_on_precompile = false
(2)但是,如果使用ActiveAdmin和/或Devise,则在通过编码routes.rb预编译资产时排除其路由,如下所示
unless ARGV.join.include?('assets:precompile')
ActiveAdmin.routes(self)
devise_for :admin_users, ...etc....
devise_for :users, ...etc...
devise_scope :user do
get "/login", ..etc
end
根据here和其他地方