slack-ruby-gemというのもありこちらを紹介する記事は多いのですが、star数が多いこちらslack-notifierを使ってみた記事は少なかったので、まとめました。(どちらも単純にメッセージを送るだけだったら、機能的に差異は無さそう)
Slack側の事前準備(WebHookURLを取得する)
チャンネルのプルダウンから Add a service integration
を選択します
Integrations
の一覧から、 Incoming WebHooks
を選択します(下の方にあります)
プルダウンから通知したいチャンネルを選択して、 Add Incoming WebHooks
をクリックします。
ここに表示されている Webhook URL
をメモしておきます。(slackへの表示名や、アイコン画像もここで変更できます。)
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')
私は環境変数に書いて、参照するようにしたりしてます。
事前準備で取得した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など使って遅延実行した方が良いと思う)