Вы можете использовать промежуточное программное обеспечение Rack, например:
module Rack
class Snoop
def initialize(app)
@app = app
end
def call(env)
status, headers, body = @app.call(env)
case status
when 200
# Who needs weekly status reports?
mail(:to => "myteamleader@mycompany.com", :subject => "See, I told you the application works!", :body => body)
when 500
# A bit of extra motivation to fix these errors
mail(:to => "ceo@mycompany.com", :subject => "Look boss, the application is broken again!", :body => body)
end
[status, headers, body]
end
end
end
Вы можете использовать его, вставив его в config/application.rb
или в один из config/environments/ENV.rb
.
config.middleware.insert_before(ActionDispatch::ShowExceptions, Rack::Snoop)
Вы заметите, что я вставил его до ActionDispatch::ShowExceptions
, потому что это позволит отлавливать 500 ошибок, вызванных внутренними исключениями. Если вы хотите его в другом месте, вы можете посмотреть на стек промежуточного программного обеспечения с помощью rake middleware
и поместить его в нужное место с помощью insert_before
или insert_after
.