私は生産モードにあるかのように単にエラーを表示するためにレールを取得する方法を見つけようと多くの時間を掛けていました(単純に私はそれが私は非常に不満を抱いているrescue_action_in_public
だから最初に私はあなたが
config.consider_all_requests_local = false
を持つように設定/環境/ development.rbを設定し、アプリケーションのコントローラでできることを読む...)期待していません:
protected
def local_request?
false
end
def rescue_action_in_public(exception)
logger.info("**** LOL ****")
redirect_to :root, :notice => "lol"
end
しかし、ActiveRecord :: RecordNotFoundエラーをトリガすると、スタックトレースが表示され、ログに何も配置されません。
は...次の私は、だから私はその後、私はあなたがlocal_requestを交換する必要があること、読む..同じことという
を試してみました...あなたはプロダクションモードでなければならないこと読みますか?設定/環境/ production.rb
class ActionDispatch::Request
def local_request?(*args)
false
end
end
の1を使用してアプリケーションのコントローラのメソッドだから私はまだ、スタックトレース、およびなしのログメッセージを取得することがなかった..
その後、私はrescue_action_in_publicがしていることを読みます.. ShowExceptionsクラスになるので、私はまだ
設定/初期化子で/ error_handling.rbそのmodule ActionDispatch
class ShowExceptions
protected
def rescue_action_in_public(exception)
logger.info("************** WTF ")
status = status_code(exception).to_s
template = ActionView::Base.new(["#{Rails.root}/app/views"])
if ["404"].include?(status)
file = "/errors/404.html.erb"
else
file = "/errors/500.html.erb"
end
body = template.render(:file => file)
render(status, body)
end
end
end
を入れて..私は、スタックトレースを取得していない...そしてまだ私のログには何も。
AFAIK 'rescue_action_in_public'はRails 3で壊れています。' rescue_from'を試してください。これが私のやり方です。 – whitequark
それに同意し、Rails.envまたはrequest.localをチェックすることができますか?内部** rescue_from ** – Anatoly