编辑:我是rails学生的新红宝石。
在我的Git Push Heroku Master之后,我遇到了与Heroku的问题。这是最新和最好的,中止rake资产:预编译。
-----> 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?
Tasks: TOP => environment
(See full trace by running task with --trace)
Precompiling assets failed, enabling runtime asset compilation
Injecting rails31_enable_runtime_asset_compilation
Please see this article for troubleshooting help:
http://devcenter.heroku.com/articles/rails31_heroku_cedar#troubleshooting
下面是我的Gemfile的内容:
gem 'rails', '3.2.8'
gem 'bootstrap-sass', '2.1'
gem 'pg'
group :development, :test do
gem 'rspec-rails'
gem 'guard-rspec'
gem 'guard-spork'
gem 'spork'
gem 'annotate'
gem 'database_cleaner'
end
# Gems used only for assets and not required
# in production environments by default.
group :assets do
gem 'sass-rails', '~> 3.2.3'
end
platforms :jruby do
gem 'trinidad'
gem 'jruby-openssl'
end
gem 'jquery-rails'
# Use unicorn as the web server
# gem 'unicorn'
# Deploy with Capistrano
# gem 'capistrano'
# To use debugger
# gem 'ruby-debug'
# Bundle the extra gems:
gem 'RedCloth', '~> 4.2.9', :require => 'redcloth'
gem 'ruby-openid', :require => 'openid'
gem 'rack-openid', :require => 'rack/openid'
gem 'aaronh-chronic', :require => 'chronic' # Fixes for 1.9.2
gem 'coderay'
gem 'lesstile'
gem 'formtastic'
gem 'will_paginate', '~> 3.0.2'
gem 'exception_notification', '~> 2.5.2'
gem 'open_id_authentication'
# Bundle gems for the local environment. Make sure to
# put test-only gems in this group so their generators
# and rake tasks are available in development mode:
group :test do
gem 'database_cleaner'
gem 'cucumber-rails', :require => false
gem 'cucumber-websteps', :require => false
gem 'factory_girl'
gem 'rspec'
gem 'nokogiri', '~> 1.5.0'
gem 'webrat'
end
可能是什么问题?
更新:我用--trace运行了rake命令,它因为生产数据库不存在而提醒我失败。我创建了数据库,并再次运行了--trace,这就是我目前正在抛出的内容:
Command failed with status (1): [/usr/local/Cellar/ruby/1.9.3-p286/bin/ruby...]
答案 0 :(得分:56)
请参阅Rails 3.1+ Asset Pipeline on Heroku Cedar文章。 “故障排除”部分介绍了此确切方案。
简而言之,您的Heroku应用程序在构建(包括资产编译)和运行(您的应用程序可用)之间存在很强的分离。这与12-factor app principles一致,但这意味着您的应用程序在构建阶段(包括数据库)无法访问任何已配置的资源,这意味着在资产预编译期间ActiveRecord不可用。
您可以告诉Rails在config/application.rb
资产编译期间不要引导您的应用程序:
config.assets.initialize_on_precompile = false
故障排除部分还建议:
如果rake资产:预编译仍然无效,您可以通过在本地
config/database.yml
中配置不存在的数据库并尝试运行rake assets:precompile
来本地调试此数据。理想情况下,您应该能够在不连接数据库的情况下运行此命令。
答案 1 :(得分:13)
今晚几个小时我一直在努力解决同样的问题。添加后
config.assets.initialize_on_precompile = false
到application.rb,记得做一个
git commit
之后。我忘记这样做了,Heroku不知道我改变了应用程序.rb。他们的故障排除页面上没有这个额外的行。
答案 2 :(得分:4)
对于Rails 4
启用Heroku Labs功能来解决此问题
heroku labs:启用user-env-compile
答案 3 :(得分:3)
我在Rails 4中遇到过这个问题,而其他任何建议都没有帮助。我终于想通了,这是由于Rollify gem试图连接到数据库。这已在Rollify gem中修复,但是,您可能需要获取最新的源代码才能获得修复。我只是将Rollify的gem导入更改为:
gem 'rolify', :git => 'git://github.com/EppO/rolify.git'
这似乎解决了这个问题,我还没有做过任何其他的建议。
不要忘记捆绑安装并将更改提交给git。
此外,如果这也无法解决您的问题,您可能需要开始密切关注您正在使用的宝石,并确保它们都没有尝试连接到数据库。