当我耙空气制动器时:测试我在生产时遇到这个例外。 Errbit应用程序托管在heroku上,并且不接收来自生产的任何消息。问题是什么?
Airbrake 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'
答案 0 :(得分:1)
这是由于在3.1.8之后Airbrake发生变化导致的Errbit known issue。
7天前,fix被提交给unnamed branch的Errbit(截至撰写本文时)。
从未命名的分支重新安装Errbit,或手动实施更改。或者等到修复程序进入Errbit主干,然后根据Errbit自述文件中的说明进行升级。
或者,您可以降级到较旧版本的Airbrake。版本3.1.8 does not contain突破性变化。我通过在我的机器上安装Airbrake 3.1.8并检查文件来验证这一点。将其放入Gemfile中,然后运行bundle install
:
gem "airbrake", "3.1.8"
由于您可以验证使用兼容版本的Airbrake,请查看Errbit。
在当前的Errbit主干中,BacktraceLine#method=
(source)是Mongoid提供的接口。未定义的方法错误意味着Mongoid不在运行时提供该方法。您可能在测试环境中遇到Mongoid的初始化或配置问题。
原来这个错误是由Errbit安装没有Mongoid 引起的,这是Errbit所要求的。
Errbit覆盖Airbrake通知器宝石,钩子返回Errbit,因此使用Airbrake会无意中调用Errbit 。没有Mongoid,Errbit就会失败。
有两种解决方案可供选择:
...或