私はいくつかのコントローラといくつかのレーキタスクを持つ単純なレールアプリケーションを持っています。いくつかのタスクは、whenever gemで設定されたcronによって実行されます。私の仕事のrakeタスクの例外例外通知ツール
一つは毎日実行され、いつかそれが例外を発生させ、デフォルトで私はcronのことで、この警告を受ける
私が起こっているとこのような理由のために、私はちょうどこの exception notificationをインストールしたものをデバッグしたいrake aborted!
undefined method `parameterize' for nil:NilClass
Tasks: TOP => mailboxes:clean_processed
(See full trace by running task with --trace)
と私の
Gemfile
gem "exception_notification", "~> 2.4.1", :require => 'exception_notifier'
と私のapplication.rb
ファイルに設定され、このラインを持つ宝石
この宝石はラックミドルウェアなので、ウェブリクエストでのみ動作し、レーキでは動作しません。私はレーキの仕事のためにそれを可能にしたいと思います、そして、私は仕事をするthis gistを見つけました。
それは動作しますが、しかしそれはDRYではないですが、私はその方法で宝石の設定を繰り返す必要があると私はまた、
exception_notify { actual_task_code }
のようにブロックで自分の発言を囲むためにすべての私のすくいタスクを変更する必要がある任意のはありますこれを解決するより良い方法は?
P.S.通知の宝石を変更する必要がある場合は、プロジェクトに数行のコードを追加するだけで問題はありません。
P.P.S.私はまた、--trace
オプションを追加するためにcrontabのレイクラインを変更できることを知っていますが、私はその解決策が気に入らないので、例外通知機能imhoがウェブコードでも役立つより良い解決策です。
更新私はちょうどこの関連する質問を見つけました:exception_notification for delayed_jobしかし両方の答えは同じようなトリックを使用します。
私はエアブレーキ(旧hoptoadとして知られている)または例外のようなオンラインサービスを試してみるつもりですが、それらの両方がサービスを支払っている...
アップデート2:私は非常に、Airbrake Appを試してみましたすばらしいアプリケーションですが、同じ問題で苦しんでいますが、レイクタスクから例外を通知するためにRakefileをハックする必要があります。しかし、このコードが必要なだけで、このコードが必要なので、ハックはあまり乾燥しません。設定パラメータを繰り返す必要はありません。私はレーキのタスクで例外を通知するためにこれよりもうまくいっていないと思います。
Rakeエラーのログを有効にするには、 '' conifg/initializers/airbrake.rb'''に '' config.rescue_rake_exceptions = true''行を追加する必要があります。 – KurtPreston