28

編集:私は新しいRubyonRailsの学生です。

Git Push Herokuマスターに続いて、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...]
4

4 に答える 4

56

HarokuCedarのRails3.1+AssetPipelineの記事を参照してください。この正確なシナリオについては、トラブルシューティングのセクションで説明しています。

つまり、Herokuアプリケーションは、ビルド(アセットのコンパイルを含む)と実行(アプリケーションが利用可能になる場所)を強力に分離しています。これは12要素のアプリの原則と一致していますが、ビルドフェーズ(データベースを含む)ではアプリケーションが構成済みのリソースにアクセスできないことを意味します。つまり、アセットの事前コンパイル中はActiveRecordを使用できません。

次の場所で、アセットのコンパイル中にアプリケーションをブートストラップしないようにRailsに指示できますconfig/application.rb

config.assets.initialize_on_precompile = false

トラブルシューティングのセクションでは、次のことも推奨しています。

rake Assets:precompileがまだ機能しない場合は、ローカルに存在しないデータベースを構成しconfig/database.ymlて実行を試みることにより、これをローカルでデバッグできますrake assets:precompile。理想的には、データベースに接続せずにこのコマンドを実行できるはずです。

于 2012-12-04T23:20:36.203 に答える
13

私は今夜​​何時間も、まったく同じ問題に苦しんでいました。追加後

config.assets.initialize_on_precompile = false

application.rbに、忘れずに

git commit

その直後。これを行うのを忘れたので、Herokuはapplication.rbを変更したことを知りませんでした。トラブルシューティングページにこの余分な行はありません。

于 2013-09-11T08:34:28.140 に答える
4

Rails4の場合

Heroku Labs機能を有効にして、この問題を修正します

heroku labs:user-env-compileを有効にする

于 2014-02-21T15:25:40.573 に答える
3

Rails 4でこの問題が発生しましたが、他の提案は役に立ちませんでした。私はついにそれを理解しました、そしてそれはデータベースに接続しようとしているRollify宝石によるものでした。これはRollifygemで修正されていますが、修正するには最新のソースコードを入手する必要がある場合があります。Rollifyのgemインポートを次のように変更します。

gem 'rolify', :git => 'git://github.com/EppO/rolify.git'

それで問題は解決したようで、他の提案をする必要はありませんでした。

インストールをバンドルして、変更をgitにコミットすることを忘れないでください。

また、それでも問題が解決しない場合は、使用しているgemを詳しく調べて、データベースへの接続を試みていないことを確認することをお勧めします。

于 2014-03-20T15:57:17.013 に答える