はじめに
今回はSlack Webhookを利用して、RailsアプリからSlackに通知してみます。
Slackに通知させる方法
##必要なGem
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が表示されるため、コピーしておく。他人に見せないよう注意して管理してください。
##Railsに設定する
アプリのルートディレクトリに.env
というファイルを作成しましょう。
ここで環境変数を設定します。
SLACK_WEBHOOK_URL=https://hooks.slack.com~~~~~ #取得したWebHooksURL
SLACK_CHANNEL=general #指定したチャンネル名
続いて、.env
をgitの管理対象外にします。
ルートディレクトリの.gitignore
に以下を追記。
/.env
もしルートディレクトリに.gitignore
が作られていない場合は作ってください!
(PCによってはrails new
した時に自動で生成されない場合があります。)
これを記述しないとGitHubにpushした時.env
が公開されてしまいます!!
呼び出してみよう
通知したい場所で以下のように記述すればOK
notifier = Slack::Notifier.new(
ENV['SLACK_WEBHOOK_URL'],
channel: "##{ENV['SLACK_CHANNEL']}",
username: '通知です'
)
notifier.ping '通知テキスト'
これで通知されるようになりました!
#終わりに
お疲れ様でした。
例外や通報機能を実装した際にも設定できそうですね。