7
3

More than 3 years have passed since last update.

【Rails】Slackに通知する方法

Last updated at Posted at 2021-02-23

はじめに

今回はSlack Webhookを利用して、RailsアプリからSlackに通知してみます。

Slackに通知させる方法

必要なGem

Gemfileに以下の二つを追記しましょう。

Gemfile
gem 'slack-notifier'
gem 'dotenv-rails'
ターミナル
bundle install

slack-notifierはその名の通り、Slackに通知を送る際に利用します。

dotenv-rails.envに定義した環境変数を読み込むことのできるgemです。
よく使うgemなのでこちらも一読しておきましょう。
今回は後述するSlackのWebHooksURLとchannelを環境変数で管理する際に利用します。

Slack WebHooksURLを取得する

①以下のURLにアクセスする。
https://slack.com/services/new/incoming-webhook

②「Post to Channel」のセレクトボックスから通知したいチャンネルを選ぶ。(私はgeneralにしました)
③「Add Incoming WebHooks integration」を押して発行する。
④以下の画像のようにURLが表示されるため、コピーしておく。他人に見せないよう注意して管理してください。
スクリーンショット 2021-02-23 13.24.37.png

Railsに設定する

アプリのルートディレクトリに.envというファイルを作成しましょう。
ここで環境変数を設定します。

.env
SLACK_WEBHOOK_URL=https://hooks.slack.com~~~~~ #取得したWebHooksURL
SLACK_CHANNEL=general #指定したチャンネル名

続いて、.envをgitの管理対象外にします。
ルートディレクトリの.gitignoreに以下を追記。

.gitignore
/.env

もしルートディレクトリに.gitignoreが作られていない場合は作ってください!
(PCによってはrails newした時に自動で生成されない場合があります。)

これを記述しないとGitHubにpushした時.envが公開されてしまいます!!

呼び出してみよう

通知したい場所で以下のように記述すればOK

○○_controller
notifier = Slack::Notifier.new(
  ENV['SLACK_WEBHOOK_URL'],
  channel: "##{ENV['SLACK_CHANNEL']}",
  username: '通知です'
)
notifier.ping '通知テキスト'

これで通知されるようになりました!

終わりに

お疲れ様でした。
例外や通報機能を実装した際にも設定できそうですね。

7
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
3