【问题标题】:Is it possible to catch ActiveModel::Errors with Raven?是否可以使用 Raven 捕获 ActiveModel::Errors?
【发布时间】:2020-07-12 01:52:41
【问题描述】:

我正在将 Raven 集成到我的 rails 项目中。

是否可以用Raven.capture_exception 捕获ActiveModel::Errors

我的意思是,当您调用object.saveobject.valid? 时,错误会存储在object.errors 中,那么是否可以这样做Raven.capture_exception(object.errors)

【问题讨论】:

  • 您的意思是验证错误等吗?
  • 你的问题我不清楚。当您调用一个在验证失败时会引发异常的方法时——例如save!create!,那么异常将通过 Raven 记录。当您只调用 savevalid? 不会引发异常时,您想做什么?
  • @RomanAlekseiev 是的
  • @spickermann 当您调用object.saveobject.valid? 时,错误会存储在object.errors 中,所以可以这样做Raven.capture_excception(object.errors) 吗?

标签: ruby-on-rails ruby sentry


【解决方案1】:

我会做这样的事情

unless model_instance.valid?
  Raven.capture_exception(model_instance.errors)
end

即检查我的model_instance 对象是否有错误(无效),所以我将它们发送给 Sentry

29.04 更新

这段代码呢?我没试过,但如果能成功我会很高兴

unless model_instance.valid?
  model_instance.errors.full_messages.each do |msg|
    Raven.capture_exception(ActiveModel::ValidationError, { message: msg })
  end
end

【讨论】:

  • 口头解释通常是非常有用的补充
  • 不可能,因为Raven.capture_exception 在第一次争论中调用了message 方法,而model_instance.errors 没有message 方法。
  • 我猜你混淆了capture_exceptioncapture_message 方法。我更新了一点代码
  • 如果我们传递ActiveModel::ValidationError 的实例,第二个可能会起作用。但我尝试了第一个它没有工作并得到undefined method message 错误。
猜你喜欢
  • 2012-09-10
  • 2017-03-01
  • 2020-09-16
  • 2013-04-18
  • 1970-01-01
  • 1970-01-01
  • 2018-09-17
  • 2014-12-20
  • 2011-06-18
相关资源
最近更新 更多