推送到heroku时出错 - 中止我的rake资产:预编译

Tom*_*oco 28 ruby-on-rails heroku

编辑:我是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
Run Code Online (Sandbox Code Playgroud)

下面是我的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
Run Code Online (Sandbox Code Playgroud)

可能是什么问题?

更新:我使用--trace运行了rake命令,它因为生产数据库不存在而提醒我失败.我创建了数据库,并再次运行--trace,这就是我目前被抛出的内容:

Command failed with status (1): [/usr/local/Cellar/ruby/1.9.3-p286/bin/ruby...]
Run Code Online (Sandbox Code Playgroud)

wil*_*ynn 56

请参阅Heroku Cedar上Rails 3.1+ Asset Pipeline文章."故障排除"部分介绍了此确切方案.

简而言之,您的Heroku应用程序在构建(包括资产编译)和运行(您的应用程序可用)之间存在很强的分离.这与12因素应用程序原则一致,但这意味着您的应用程序无法在构建阶段(包括数据库)访问任何已配置的资源,这意味着ActiveRecord在资产预编译期间不可用.

您可以告诉Rails在资产编译期间不要引导您的应用程序config/application.rb:

config.assets.initialize_on_precompile = false
Run Code Online (Sandbox Code Playgroud)

故障排除部分还建议:

如果rake资产:预编译仍然不起作用,您可以通过在本地配置不存在的数据库config/database.yml并尝试运行来本地调试它rake assets:precompile.理想情况下,您应该能够在不连接数据库的情况下运行此命令.


Ray*_*Gan 13

今晚几个小时我一直在努力解决同样的问题.添加后

config.assets.initialize_on_precompile = false
Run Code Online (Sandbox Code Playgroud)

到application.rb,记得做一个

git commit
Run Code Online (Sandbox Code Playgroud)

之后.我忘记这样做了,Heroku不知道我改变了应用程序.rb.他们的故障排除页面上没有这个额外的行.