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

これは、3.1.8 以降の Airbrake の変更によって引き起こされる Errbitの既知の問題です。

Errbitの名前のないブランチに 7 日前に修正がコミットされました(この記事の執筆時点)。

名前のないブランチから Errbit を再インストールするか、変更を手動で実装します。または、修正が Errbit トランクに反映されるまで待ってから、Errbit の readme の指示に従ってアップグレードしてください。

または、古いバージョンの 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 が必要とする Mongoidなしで Errbit がインストールされていることが原因であることが判明しました。

Errbit は Airbrake notifier gem を Errbit へのフックでオーバーライドするため、Airbrake を使用すると誤って Errbit が呼び出されます。Mongoid がないと Errbit は失敗します。

次の 2 つのソリューションを利用できます。

また...

  • Errbit を完全に実装して使用します。
于 2013-04-11T15:26:12.467 に答える