3

だから私はこれに1日を費やし、少しでも関連するすべてのSOの質問を読み、Herokuのドキュメントをチェックしました。

これは、プッシュ時の Heroku の問題です。

-----> 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?

きっとおなじです。

Rails 4 での Heroku の展開で多くのことが変更されたことは承知していますが、それを修正するために 4.0 以前の提案の多くを試してみました。

これは:

   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `initialize'
   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `new'
   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:825:in `connect'
   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:542:in `initialize'
   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `new'
   /tmp/build_22xpuyyrmltz6/vendor/bundle/ruby/2.0.0/gems/activerecord-4.0.0/lib/active_record/connection_adapters/postgresql_adapter.rb:41:in `postgresql_connection'

など...私が集めたものから、これはコンパイル時にデータベースにアクセスしようとしているからです。

これまでの私の質問は、この質問のカーボンコピーです

RAILS_ENV=production bundle exec rake assets:precompile

正常に実行され、manifest.json が生成されますが、Heroku はそれを認識しません。

私もこれを試しましたが、Rails 4 はデフォルトで false だと思います。

config.assets.initialize_on_precompile = false

それで、私が喜んで試した回避策は次のとおりです。

heroku labs:enable user-env-compile

私はこれを最も多く試し、新しいherokuアプリを作成し、オンとオフを切り替え、オンとオフを切り替えました。複数のプッシュを試しました。私も必要に応じてコミットしていたので、そうではありませんでした。

rails_12factor など、覚えていないものも試しました。すべて役に立たない。

足りないものはありますか?user-env-compile は他の人の問題を解決しているようですが、私には効果がないようです。

コンピューターを数回再起動しました...助けていただければ幸いです。

4

2 に答える 2

4

データベースに接続しようとしている宝石がどこかにあります。私の場合はacts_as_taggable_onでした。メンテナにバグを報告しました。それを使用していたモデルの行をコメントアウトすると、プリコンパイルは正常に機能しました。

# acts_as_taggable
# accepts_nested_attributes_for :tags

sidekiq が問題の原因である場合は、mount ステートメントをコメントアウトし、アセットをローカルでプリコンパイルして、heroku にプッシュすることで、これを回避できます。gem のメンテナーがバグを修正した場合は、スラッグ コンパイル中にプリコンパイルに戻ることができます。

ルートファイルを元に戻すことを覚えておく必要があるため(つまり、コメントアウトされたマウントステートメントで誤ってコミットしないようにする必要があるため)、ちょっと面倒です。

于 2013-09-01T20:32:05.363 に答える
0

Heroku のアプリで「Postgres アドオン」が有効になっていないときに、同様の問題が発生していました。

于 2013-12-30T12:41:50.033 に答える