【发布时间】:2022-01-12 05:43:28
【问题描述】:
我们刚刚在我们的 rails 项目中实现了 Sentry。它应该会自动报告错误,但是因为我们需要对要发送给 Sentry 的数据进行更多控制,所以我们必须手动调用将数据发送给 Sentry 的方法。
目前,我们在主自定义错误类中调用 sentry
class OurCustomError < StandardError
def initialize(params)
super
ThirdParty::Sentry.new(params) # it contains the logic that will send our data to sentry
end
end
但是,我向我的伙伴们争辩说,不应该从那里调用该逻辑。因为错误类应该只是描述错误的对象。对 Sentry 的调用应该放在控制器的救援(或救援从)方法中
目前我们的控制器是这样的:
#...
rescue_from OurCustomError with: :render_error
def render_error(error)
render(
status: error.status
#etc
)
end
#...
我认为我们应该从这里(控制器)调用 Sentry,而不是自定义错误类本身。像这样的:
# ...
rescue_from OurCustomError with: :handle_custom_error
def handle_custom_error(error)
ThirdParty::Sentry.new()
render_error()
end
def render_error(error)
render(
status: error.status,
#etc
)
end
...
从最佳实践的角度来看,从自定义错误类内部还是从控制器调用逻辑更好?
【问题讨论】:
标签: ruby-on-rails error-handling sentry