世界を旅して暮らしたい放浪エンジニアブログ

Railsの例外をSlackに通知「exception_notification」

「exception_notification」を利用して、Railsの例外をSlackに通知します。

[ 目次 ]

はじめに

こんにちは、香港に住んでいるWEBデベロッパーのなかむ(@nakanakamu0828)です。

この記事は過去に運用していたブログからの移行記事になります。

今回はRailsの例外をSlackに通知したいと思います。
「exception_notification」と「slack-notifier」の2つのgemを組み合わせて実装していきます。

exception_notification, slack-notifier インストール

まずはGemfileにexception_notification, slack-notifierの設定を追加します

# Gemfile
gem 'exception_notification'
gem 'slack-notifier'

続いてbundle installコマンドを実行し、ライブラリをインストールしてください。

$ bundle install
or
$ bundle install --path=vendor/bundle

※ 環境に合わせてプロジェクト配下にインストールするかどうかでコマンドを選択してください。

セットアップ

以下のコマンドから設定ファイルのテンプレートを生成します。

$ rails g exception_notification:install

config/initializers/exception_notification.rbという設定ファイルが生成されます。
以下のようなSlack通知用の設定に変更しましょう。

# config/initializers/exception_notification.rb
require 'exception_notification/rails'

ExceptionNotification.configure do |config|
  config.add_notifier :slack, {
    :webhook_url => "webhooks url",
    :channel => "#グループ"
  }
end

Slackからwebhooks urlを取得

  1. https://[利用するSlack名].slack.com/appsをブラウザで開く
  2. 検索窓からIncoming WebHooksを検索し選択します。
  3. Add Configurationをクリック
  4. Post to Channelにて対象のチャンネルを選択
  5. URLが生成され、設定画面が表示されます。こちらのURLをwebhooks urlとして利用します。アイコンや名称などご自身の環境に合わせて修正してください。

application_controller.rbで例外をキャッチする

application_controller.rbに例外のハンドリング処理を追加します。以下はサンプルとなります。

#app/controllers/application_controller.rb
rescue_from Exception, with: :server_error

...
def server_error(e)
  ExceptionNotifier.notify_exception(e, :env => request.env, :data => {:message => "error"})
  respond_to do |format|
    format.html { render template: 'front/errors/500', layout: 'front/layouts/error', status: 500 }
    format.all { render nothing: true, status: 500 }
  end
end

前のページ

次のページ

Profile

なかむ🇭🇰Webデベロッパー

なかむ🇭🇰Webデベロッパー

香港在住4年目になるWEBエンジニアのなかむです。 現在は、LaravelやRailsを利用したWEB開発を中心にエンジニアをしています。 顧客は全て日本の企業になります。リモート開発にて各企業様の支援を行なっております

プロフィール詳細はこちら

Latest Posts