gotagota日記

「面白きことは良きことなり」

エラーの監視に便利な gem , exception_notification を使ってみた

なんかしらのエラーが発生すると、メールを自動的に送付してくれる gem 、exception_notification を実際にかる〜く使ってみたので、そのメモ。

例によって、bundler 経由で gem をがしがしいれていきます。

環境

  • Rails 4.1.6
  • Ruby 2.1.1
  • exception_notification 4.0.1
  • mailcatcher 0.2.4

手順

事前準備

  • 適当に rails アプリを作る。
    be rails new AppName --skip-bundle

  • Gemfile に 以下の二つを追加。

gem 'mailcatcher'
gem 'exception_notification'
  • gem をインストール。
    bundle install --path vendor/bundle

これで必要なものが揃いました。

exception_notification を使ってみる

まずは設定ファイルをいじっていく。
rails デフォルト設定の修正

development 環境では、エラーが発生してもデフォルトでメールを送らないような設定になっているので、以下のように config/environments/development.rbtrue に修正。

config.action_mailer.raise_delivery_errors = ture
SMTP サーバの設定

config/application.rb のを次のように書き換える。
※ 余計なコメントは削除しました

require File.expand_path('../boot', __FILE__)
require "active_model/railtie"
require "active_record/railtie"
require "action_controller/railtie"
require "action_mailer/railtie"
require "action_view/railtie"
require "sprockets/railtie"

Bundler.require(*Rails.groups)

module Notifi
  class Application < Rails::Application
    config.action_mailer.delivery_method = :smtp
    config.action_mailer.smtp_settings = { :address => "localhost", :port => 1025 }
  end
end

これらは、 本家の書き方に習っている。
sj26/mailcatcher

exception_notification の設定

エラー時に送信されるメール情報についての設定を config/environments/development.rb に追記する。

  config.middleware.use ExceptionNotification::Rack,
    :email => {
      email_prefix: "[Exception] ",
      sender_address: %{"Exception Notifier" <no-reply@example.com>},
      exception_recipients: ["notification@example.com"]
    }
コントローラを作成する

わざとエラーを発生させるためのページを作ります。

$ be rails g controller home index

そして、HomeController#index に例外を発生させるため以下を追記。

class HomeController < ApplicationController
  def index
    raise 'aaa'
  end
end
サーバを起動し、確認する

$ be rails srails サーバを立てつつ、 Command + t でタブを増やすなりして、$ be mailcatcher で SMPT サーバを起動する。

まず、rails サーバにアクセスして例外を発生させる。
デフォルトでは以下。
http://localhost:3000/home/index

その次に、SMPT サーバにアクセスしてメールがと届いているか確認する。
デフォルトでは以下。 http://127.0.0.1:1080

f:id:gotagotagoat:20141008165157p:plain

こんな感じで、さっきまで空だったのが、なんか来てます。
ここまで来たら成功。

参考URL