3

アプリを Heroku で正常に起動できません。基本は次のとおりです。

  • Ruby 1.9.3p392 (開発端末で Ruby -v を実行すると、これが返されますが、Heroku ログは Ruby 2.0.0 を示しているようです)
  • レール 3.2.13
  • ユニコーン Web サーバー
  • Postgresql データベース

アプリを Heroku にデプロイしましたが、「アプリケーションでエラーが発生したため、ページを提供できませんでした」というメッセージが表示されます。

Heroku ログの最終エントリは次のとおりです。

+00:00 app[web.1]: from /app/vendor/bundle/ruby/2.0.0/bin/unicorn:23:in `<main>'
+00:00 heroku[web.1]: Process exited with status 1
+00:00 heroku[web.1]: State changed from starting to crashed

Heroku ps を実行しようとすると、次のようになります。

=== web (1X): `bundle exec unicorn -p $PORT -c ./config/unicorn.rb`
web.1: crashed 2013/06/22 17:31:22 (~ 6m ago)

app/config/application.rb のこの行から問題が発生している可能性があると思います

ENV.update YAML.load(File.read(File.expand_path('../application.yml', __FILE__)))

この行は、開発環境で application.yml ファイルから環境変数を読み取るのに役立ちます。ただし、セキュリティ上の理由から、レポから gitignore すると、Heroku ログでこのファイルが見つからないと不平を言うことがわかります。本番用に、次の方法で Heroku に環境変数を設定しました。

heroku config:add SECRET_TOKEN=a_really_long_number

ここに私の app/config/unicorn.rb があります

# config/unicorn.rb
worker_processes Integer(ENV["WEB_CONCURRENCY"] || 3)
timeout 15
preload_app true

before_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn master intercepting TERM and sending myself QUIT instead'
    Process.kill 'QUIT', Process.pid
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.connection.disconnect!
end

after_fork do |server, worker|
  Signal.trap 'TERM' do
    puts 'Unicorn worker intercepting TERM and doing nothing. Wait for master to send QUIT'
  end

  defined?(ActiveRecord::Base) and
    ActiveRecord::Base.establish_connection
end

そして、これが私のProcfileです

web: bundle exec unicorn -p $PORT -c ./config/unicorn.rb

app/config/unicorn.rb と Procfile の両方の設定はhttps://devcenter.heroku.com/articles/rails-unicornから取得します

IRC のガイダンスに基づいて Figaro をインストールしましたが、残念ながら問題は解決しませんでした。

完全なアプリを見たい場合は、https ://github.com/mxstrand/mxspro に投稿されています。

何が問題なのか、またはさらにトラブルシューティングする方法についてのガイダンスがあれば、よろしくお願いします。ありがとうございました。

4

1 に答える 1

1

あなたはあなたの分析にスポットを当てています。私はちょうどあなたのコードを引き出し、いくつかの調整を行い、Heroku で開始しました。

私の唯一の変更点。

config/application.rb- 12 行目と 13 行目をconfig/environments/development.rb- 開発環境変数に application.yml を使用している場合はそのままにします。他のオプションは、行 13 を開発環境の条件付きにすることif Rails.env.development?です。

config/environments/production.rb- 行 33 の前の # マークが欠落している

于 2013-06-24T06:47:49.687 に答える