web-dev-qa-db-ja.com

Herokuアップロード-アセットのプリコンパイルに失敗しました

私は助けが必要です。アプリをherokuにアップロードしようとすると、このエラーが表示されますが、その理由は誰にもわかりませんか?いくつかは間違っていました。ありがとう

       Using rake (10.1.0)
       ...
       Using tlsmail (0.0.1)
       Using uglifier (2.1.2)
       Your bundle is complete! It was installed into ./vendor/bundle
-----> Writing config/database.yml to read from DATABASE_URL
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/Ruby/1.9.1/gems/tlsmail-0.0.1/lib/net/smtp.rb:806: warning: already initialized constant SMTPSession
       ...
       /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/Ruby/1.9.1/gems/tlsmail-0.0.1/lib/net/pop.rb:702: warning: already initialized constant APOPSession
       DEPRECATION WARNING: You have Rails 2.3-style plugins in vendor/plugins! Support for these plugins will be removed in Rails 4.0. Move them out and bundle them in your Gemfile, or fold them in to your app as lib/myplugin/* and config/initializers/myplugin.rb. See the release notes for more on this: http://weblog.rubyonrails.org/2012/1/4/Rails-3-2-0-rc2-has-been-released. (called from <top (required)> at /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/Rakefile:7)
       ...
       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?
       /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/Ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `initialize'
       /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/Ruby/1.9.1/gems/activerecord-3.2.12/lib/active_record/connection_adapters/postgresql_adapter.rb:1208:in `new'
       ...
       /tmp/build_e8889be5-168c-49ed-81e7-b71061fc82ee/vendor/bundle/Ruby/1.9.1/gems/actionpack-3.2.12/lib/sprockets/assets.rake:29:in `block (2 levels) in <top (required)>'
       Tasks: TOP => environment
       (See full trace by running task with --trace)
 !
 !     Precompiling assets failed.
21
user2930724

Heroku docs から:

これは、アプリがrake asset:precompileの一部としてデータベースに接続しようとしていることを意味します。構成変数が環境に存在しないため、プレースホルダーDATABASE_URLを使用してRailsを満たします。

この問題を解決するには、次の行がconfig/application.rb

# config/application.rb
config.assets.initialize_on_precompile = false

追加したら、変更をコミットしてHerokuに再デプロイします。アプリがデータベースに接続しようとせずにアセットがコンパイルされ、目撃しているエラーが解決されます。

[〜#〜] update [〜#〜]

スタックトレース の46行目には、次のメッセージが含まれます。Devise.secret_key was not set.

According Deviseの作者、 JoséValim 、この問題は次の方法で解決できます。

以下をDeviseイニシャライザーに追加してください:

config.secret_key = '-秘密鍵-'

別の方法として次の解決策 は多くのユーザーで機能しているようです:

Routes.rbファイルに移動し、devise_for:installsという行をコメントアウトしました

その後、私は戻って再実行しましたRails generate devise:install。それがうまくいかない場合は、GemfileのDeviseへの参照を次のように編集して以前のバージョンのdeviseを使用します。gem 'devise'、 ' 3.0.3 'そして、上記の手順に従ってください。

28
zeantsoi

私にとってこの問題を解決したいくつかのことがあります:

# config/application.rb
config.assets.initialize_on_precompile = false

次に、デプロイする前に、アセットをローカルでコンパイルしてコミットしました。

Rails_ENV=production bundle exec rake assets:precompile

また、起動するアプリ(私の場合はSpree commerce)で指定されているように、このherokuアドオンをインストールしました

heroku labs:enable user-env-compile -a myapp

そしてもちろん、database.ymlファイルがadapter: postgresqlを使用するように設定されていることを確認してください。

これらすべてをコミットし、herokuにプッシュすると、うまくいけば起動します。それでもアプリを開けない場合は、Herokuログを確認してください:heroku logs -n 500

heroku run rake db:migrateでデータベースを移行する必要がありました

11
Danny

あなたがgithubを使用していて、あなたが開発ブランチにいる間にherokuにプッシュしているときは、それをしないでください、マスターブランチに行き、git merge develop

その後、

Rails precompile:assets
git add -A
git commit -m "Precompile assets"
git Push heroku master

展開したWebサイトを開きたい場合

heroku open

何も表示されない場合、まずデータベースを移行します:

heroku run Rails db:migrate
heroku open
2
Migi

同じエラーメッセージでHerokuの処理に失敗しました。 Carrierwaveが原因で、セットアップに失敗したSECRET_KEY_BASE Heroku設定に。

0
Shun Yamada