当我执行rake airbrake:test时,我在生产时得到了这个异常。Errbit应用程序托管在heroku上,不会从生产环境接收任何消息。问题出在哪里?
空气制动器v3.1.8
来自github的Errbit v- last
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'发布于 2013-04-11 23:26:12
这是由3.1.8版本后的空气制动器的变化引起的错误位中的known issue。
fix在7天前(在撰写本文时)提交给Errbit的unnamed branch。
从未命名的分支重新安装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的初始化或配置问题。
编辑2:
事实证明,这个错误是由于Errbit在没有安装Mongoid的情况下安装而导致的,这是Errbit所需要的。
Errbit用钩子覆盖了空气制动通知器gem,因此使用空气制动会无意中调用Errbit。没有了Mongoid,Errbit就会失败。
有两种解决方案可供选择:
从application.中完全删除
或者..。
https://stackoverflow.com/questions/15946995
复制相似问题