アプリを 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 に投稿されています。
何が問題なのか、またはさらにトラブルシューティングする方法についてのガイダンスがあれば、よろしくお願いします。ありがとうございました。