0

私は Rails と Heroku を初めて使用します。アプリを Heroku にプッシュしようとしたところ、プッシュは成功しましたが、何らかの理由で Heroku サイトでアプリケーション エラーが発生しました。

"An error occurred in the application and your page could not be served." 

誰かが助けてくれたら最高です。私のアプリと環境に関するいくつかの情報を渡します。

私の Gem ファイルでは、次のデータベースを実行しています。

group :development, :test do
gem "sqlite3", "~> 1.3.6"
end

group :production do 
gem 'pg'
end

group :assets do
gem 'sass-rails',   '~> 3.2.3'
gem 'coffee-rails', '~> 3.2.1'
gem 'therubyracer'
gem 'uglifier', '>= 1.0.3'
end

Database.yml では、次のデータベースが設定されています。

development:
adapter: sqlite3
database: db/development.sqlite3
pool: 5
timeout: 5000

test:
adapter: sqlite3
database: db/test.sqlite3
pool: 5
timeout: 5000

production:
adapter: sqlite3
database: db/production.sqlite3
pool: 5
timeout: 5000

まず、実稼働サーバーで .yml ファイルがまだ Sqlite3 を表示している理由がわかりません。pgresに変更すべきではありませんか。Heroku ログに表示される主なエラー メッセージは次のとおりです。

 2012-10-23T19:22:36+00:00 heroku[router]: Error H10 (App crashed) -> GET thawing-dusk-  8202.herokuapp.com/analysis dyno= queue= wait= service= status=503 bytes=

誰かがこれで私を助けてくれることを願っています!

ありがとう、

4

2 に答える 2

1

Rails アプリケーションは、ソース ファイルからの起動時に例外を発生させる可能性が最も高いです。

Rails は開発中またはテスト中にファイルを積極的にロードしないため、この例外は開発環境では明らかではない場合があります。ただし、実稼働環境で Rails アプリケーションがすべてのソース ファイルを積極的にロードすると、例外によってアプリケーションの起動プロセスが中断され、Heroku ログにスタック トレースが不足してアプリケーションがクラッシュします。

heroku run rails cHeroku Toolbelt が含まれており、プロジェクトに構成されていると仮定して、有益なスタック トレースを見つけるには、実行中のターミナルから Rails コンソールにアクセスします。本番環境にアクセスしているため、これも起動時に失敗しますが、スタック トレースは Heroku ログよりも広範囲になります。

問題を診断するための別の方法は、開発環境をソース ファイルを積極的にロードするように設定することです。

# config/environments/development.rb
Rails.application.configure do

  config.eager_load = true

end

最後に、この問題の最善の解決策は、ソース ファイルの機能を検証するテスト ケースを含めるように、テスト スイートがある場合はそれを確認することです。

于 2017-06-08T07:08:38.180 に答える