3

これはおそらく非常に単純ですが、エラー ページが表示されない理由がわかりません。

まず、ホスティングに Heroku を使用しているため、間違いなく本番モードです。

「config.action_controller.consider_all_requests_local」行を true に設定すると、詳細なエラー メッセージが表示されますが、それ以外の場合は、完全に 100% 空白の画面が表示されます。ソースを表示すると、空白でもあります。

私の 404,422,500.html ファイルはすべて公開されており、私はそれらに触れていません。

そして、プロダクションモードで起動すると、ローカルマシンで動作するようです。では、Heroku と関係があるのでしょうか? 何か案は?

ログは私に何の役にも立たないことを教えてくれます。

以下は production.rb ファイルの詳細です

config.cache_classes = true

#ActionMailer::Base.delivery_method = :sendmail
Paperclip.options[:command_path] = "/usr/bin/"

# Don't care if the mailer can't send
config.action_mailer.raise_delivery_errors = false

# set delivery method to :smtp, :sendmail or :test
config.action_mailer.delivery_method = :smtp

# Full error reports are disabled and caching is turned on
config.action_controller.consider_all_requests_local = false
config.action_controller.perform_caching             = true
config.action_view.cache_template_loading            = true
4

1 に答える 1

3

Heroku が Passenger や Mongrel のように .html ファイルを使用しているとは思いません。次の 2 つの基本的なメカニズムを使用して、独自の例外をキャッチして処理する必要がある場合があります。

  • 爆発する可能性のあるものすべてに対して、ApplicationController で rescue_from を使用して例外ハンドラーを作成します。
  • デフォルト ルートを作成して、他の方法でルーティングされないものをすべてキャッチします。

ルーティング テーブルが壊れたり、"500" エラーが発生したりする場合は、例外が原因です。これらを処理する必要があります。そうしないと、Web サーバーが別の方法で構成されていない限り、空白の画面が表示されます。

Apache は、ErrorDocument ディレクティブを使用してこれを行うように構成できます。

于 2010-03-02T19:07:11.247 に答える