【发布时间】:2015-11-04 14:43:06
【问题描述】:
在Airbrake wiki 中,它说在控制器中使用notify_airbrake 而不是Airbrake.notify,但没有解释原因。在控制器中使用notify_airbrake 有什么好处,为什么不能在其他地方使用?
【问题讨论】:
在Airbrake wiki 中,它说在控制器中使用notify_airbrake 而不是Airbrake.notify,但没有解释原因。在控制器中使用notify_airbrake 有什么好处,为什么不能在其他地方使用?
【问题讨论】:
notify_airbrake 只是一个辅助方法。您不必使用它(请随意使用Airbrake.notify)。但是notify_airbrake 将extra information 附加到通知中(如当前用户、会话、机架环境等)。使用Airbrake.notify,您只会将您传递给该方法的内容发送给该方法。
【讨论】:
这就是开源的美妙之处。您可以查看代码并弄清楚某些东西是如何以及为什么按照它的方式实现的。
话虽如此,看看airbrake代码,特别是controller_methods.rb文件(https://github.com/airbrake/airbrake/blob/3033798f69d20706f13fc0e3d79572041e9c7205/lib/airbrake/rails/controller_methods.rb)
您可以看到notify_airbrake 方法实际上调用了Airbrake.notify (Airbrake.notify_or_ignore) 的一个变体,它自动提取了一些额外信息,如会话数据、请求url、请求参数等,这些信息仅在控制器上下文中可用。如果他们不这样做,我们将不得不在控制器中手动提取该信息并将其传递。它只是为了让我们的生活更轻松:)
我的 2 美分。
【讨论】: