1

当我做 rake airbrake:test 时,我在生产中得到了这个异常。Errbit 应用程序托管在 heroku 上,并且不接收来自生产的任何消息。问题是什么?

空气制动 v 3.1.8

Errbit v - 最后来自 github

undefined method `method=' for #<BacktraceLine:0x00000005a0d160>

app/models/backtrace.rb:27:in `new'
app/models/backtrace.rb:27:in `block in raw='
app/models/backtrace.rb:26:in `each'
app/models/backtrace.rb:26:in `raw='
app/models/backtrace.rb:18:in `new'
app/models/backtrace.rb:18:in `find_or_create'
app/models/error_report.rb:33:in `backtrace'
app/models/error_report.rb:40:in `generate_notice!'
lib/overrides/hoptoad_notifier/hoptoad_notifier.rb:18:in `send_notice'
4

1 回答 1

1

这是Errbit中的一个已知问题,由 3.1.8 之后 Airbrake 的更改引起。

7 天前(截至撰写本文时)已对 Errbit的一个未命名分支进行了修复。

从未命名的分支重新安装 Errbit,或手动实施更改。或者等到修复程序进入 Errbit 中继,然后按照 Errbit 自述文件中的说明进行升级。

或者,您可以降级到旧版本的 Airbrake。版本 3.1.8不包含重大更改。我通过在我的机器上安装 Airbrake 3.1.8 并检查文件来验证这一点。把它放在你的 Gemfile 中,然后运行bundle install

gem "airbrake", "3.1.8"

编辑:

由于您可以验证使用兼容版本的 Airbrake,请查看 Errbit。

在当前 Errbit 主干中,BacktraceLine#method=( source ) 是 Mongoid 提供的接口。未定义的方法错误意味着 Mongoid 在运行时未提供该方法。您可能在测试环境中遇到了 Mongoid 的初始化或配置问题。

编辑2:

原来这个错误是由于 Errbit 没有安装Errbit需要的 Mongoid 引起的。

Errbit 使用返回 Errbit 的钩子覆盖 Airbrake 通知程序 gem,因此使用 Airbrake 会无意中调用 Errbit。没有 Mongoid,Errbit 就会失败。

有两种解决方案:

或者...

  • 完全实现 Errbit 并使用它。
于 2013-04-11T15:26:12.467 回答