当我 rake airbrake:test时,在生产中会出现此异常。 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'

最佳答案

这是Errbit中的known issue,由3.1.8之后的Airbrake更改引起。
7天前将fix提交给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提供的接口(interface)。未定义的方法错误表示Mongoid在运行时未提供该方法。在测试环境中,Mongoid可能存在初始化或配置问题。
编辑2:
事实证明,此错误是由Errbit所需要的,安装了Errbit的而不是Mongoid 引起的。
Errbit使用返回Errbit的钩子(Hook)覆盖了Airbrake通知程序gem,因此使用Airbrake会无意中调用Errbit。没有Mongoid,Errbit将失败。
有两种解决方案:
  • 从应用程序中完全删除Errbit's files

  • 要么...
  • 完全实现并使用Errbit。
  • 关于ruby-on-rails - 带有errbit的空中刹车中未定义的方法 `method=',我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15946995/

    10-12 16:22