Ruby
Rails
Slack

slack-notifierでrailsからSlackへ簡単にメッセージを送る

More than 1 year has passed since last update.

slack-ruby-gemというのもありこちらを紹介する記事は多いのですが、star数が多いこちらslack-notifierを使ってみた記事は少なかったので、まとめました。(どちらも単純にメッセージを送るだけだったら、機能的に差異は無さそう)


Slack側の事前準備(WebHookURLを取得する)

チャンネルのプルダウンから Add a service integration を選択します

Kobito.2D5JY4.png

Integrations の一覧から、 Incoming WebHooks を選択します(下の方にあります)

Kobito.y3glRH.png

プルダウンから通知したいチャンネルを選択して、 Add Incoming WebHooksをクリックします。

Kobito.CzWAzB.png

ここに表示されている Webhook URL をメモしておきます。(slackへの表示名や、アイコン画像もここで変更できます。)

Kobito.3x1qzx.png


railsアプリから、slackに通知を送る

Gemfileに slack-notifier を追加して bundle installします。

#Gemfile

gem 'slack-notifier'

あとはrailsの中で、以下の様なコードをかけば簡単にSlackに通知ができます。

notifier = Slack::Notifier.new('https://hooks.slack.com/services/hogehogefugafuga') #事前準備で取得したWebhook URL

notifier.ping('Hello')

通知されるとこんな感じ!

Kobito.tBavgl.png

私は環境変数に書いて、参照するようにしたりしてます。

事前準備で取得したWebhook URLを各環境の設定に追記します。(以下はproduction.rbに環境変数を使って定義する例)

# production.rb

config.slack_webhook_url = ENV['SLACK_WEBHOOK_URL']

notifier = Slack::Notifier.new(Rails.application.config.slack_webhook_url)

notifier.ping(message)


感想・所感

めっちゃ簡単にSlack連携できました。ただSlackへの通知はそこそこ時間がかかるので、当たり前といえば当たり前ですがカジュアルにコントローラとかから直接Slackにメッセージを送るのは注意が必要です。(sidekiqなど使って遅延実行した方が良いと思う)