2010年12月21日火曜日

Rails3 で Exception Notification

Rails 0.9.x のときに Exception Notifier (エラーをメールで通知するやつ)が便利だなーと思っていて、最近の事情はどうなのかしらと思っていたら、やっぱり例によってプラグインになっていたのね。プラグイン形式は便利かも知れないけど、メンテナが…フォーク数が…という事態になりがちで、活発なのはいいことなんだけれど、Rails3がリリースされた今「デファクトスタンダード」が無いのも辛いなと思う今日この頃。

今回のプラグインには https://github.com/michallo/exception_notification こちらを採用させてもらいました。とりあえず railsmaster から fork を辿って行って、一番新しいところにいたので、という安直な理由。でもしっかり動いてくれました。

ただ、いくつか躓くところがあったので付記。





いつものようにプラグインをインストールしたら、 config/application.rb に次のようなことを書かなければなりません。

config/application.rb:
    # Configure ActionMailer
    config.action_mailer.delivery_method = :sendmail


    # Configure ExceptionNotifier
    config.middleware.use "::ExceptionNotifier",
      :email_prefix => "[KifuCometter] ",
      :sender_address => %{"notifier" <notifier@kifu.hamanako-jp.com>},
      :exception_recipients => %w{sandmark.m@gmail.com}

まず ActionMailerdelivery_method:sendmail にしてやる必要があります。ボクが置かせてもらっている「お名前.com」の設定ではTLS接続は無理ぽっていうか公開リポジトリにユーザ名とパスワード書けるかボケェってなところで、そうでないにしろ OpenSSL::SSLError だか何だかが出て難しそうなご様子。

なので、 /usr/sbin/sendmail (-> /usr/sbin/sendmail.postfix) を直接叩くように。でも config.action_mailer の雛形が application.rb のどこを見渡してもなかったんだよねぇ…。 rails g mailer としなければ生成してくれないのかしら。

それから、 ExceptionNotifierRack のミドルウェアになっているそうなので、middleware.use としなければならないらしい。しかも、 ExceptionNotifier とリテラルで書くと「そんなん無いわー」と怒られてしまうので、文字列で "::ExceptionNotifier" としてやらなければならないらしい。なんだこのダーティハック。

ともあれこれで、無事サーバの production 環境からエラー通知が届くようになりました。ちょうど手頃なバグがあって助か…ったとか言ってる場合じゃないですよね。ちゃんとテスト書いて、テストしてからコミットしろって話で。さーせん。

そんなわけでした。

押してねっ→BlogPeople「趣味の世界」ブログランキング

0 件のコメント:

コメントを投稿