将所有控制器操作包装在 begin rescue 中以记录错误
Wrap all controller actions in a begin rescue for error logging
我最近为我的 rails 应用设置了 Rollbar。它报告错误但并不总是与上下文相关。为了获取上下文,您需要捕获异常并传入错误
begin
# code...
rescue => e
Rollbar.error(e)
有没有一种 rails 方法可以通过上下文捕获异常?
也许你用什么包裹了应用程序控制器?在 Django 中,您可以将视图子类化...
假设您的所有控制器都继承自 ApplicationController,您可以在 ApplicationController 中使用 rescue_from
来挽救任何控制器中的任何错误。
ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound do |exception|
message = "Couldn't find a record."
redirect_to no_record_url, info: message
end
end
您可以为不同的错误 类 设置多个 rescue_from
子句,但请注意它们的调用顺序是相反的,因此通用 rescue_from
应该列在其他子句之前。 .
ApplicationController < ActionController::Base
rescue_from do |exception|
message = "some unspecified error"
redirect_to rescue_message_url, info: message
end
rescue_from ActiveRecord::RecordNotFound do |exception|
message = "Couldn't find a record."
redirect_to rescue_message_url, info: message
end
end
我最近为我的 rails 应用设置了 Rollbar。它报告错误但并不总是与上下文相关。为了获取上下文,您需要捕获异常并传入错误
begin
# code...
rescue => e
Rollbar.error(e)
有没有一种 rails 方法可以通过上下文捕获异常?
也许你用什么包裹了应用程序控制器?在 Django 中,您可以将视图子类化...
假设您的所有控制器都继承自 ApplicationController,您可以在 ApplicationController 中使用 rescue_from
来挽救任何控制器中的任何错误。
ApplicationController < ActionController::Base
rescue_from ActiveRecord::RecordNotFound do |exception|
message = "Couldn't find a record."
redirect_to no_record_url, info: message
end
end
您可以为不同的错误 类 设置多个 rescue_from
子句,但请注意它们的调用顺序是相反的,因此通用 rescue_from
应该列在其他子句之前。 .
ApplicationController < ActionController::Base
rescue_from do |exception|
message = "some unspecified error"
redirect_to rescue_message_url, info: message
end
rescue_from ActiveRecord::RecordNotFound do |exception|
message = "Couldn't find a record."
redirect_to rescue_message_url, info: message
end
end