Moook(https://moook.herokuapp.com/)を運用していて、毎日管理画面を確認するのがめんどくさかったので、新規ページが追加された時にSlackに通知が送られるようにしましたφ(..)
その手順をメモしておきます。
やりかた
gemのインストール
今回は、slack-notifier
というgemを使って実装していきます。
まずは、Gemfile
に下記を追記して、bundle install
を行います。
gem 'slack-notifier'
Slackの設定
slack-notifier
ではIncoming WebHooks
のWeb hook URL
を使用して通知を送信します。
通知を送りたいワークスペースのチャネルの歯車マークからAdd an App
をクリックします。
その後、遷移先の画面にてIncoming WebHooks
を検索し、Add Configrarion
をクリックします。
そしてWebhook URL
を取得します。
ちなみにこの画面では、通知を送る名前やアイコンも設定できます。
項目 | 内容 |
---|---|
Customize Name | 通知欄で表示される名前を設定出来ます |
Customize Icon | 通知欄で表示されるアイコンを設定できます |
Moookではこんな感じにしました(・_・)
通知処理の実装
実装内容はすごく簡単です。
サンプル
def notice_slack # 先程取得したWebhook URLを引数にインスタンスを生成 notifier = Slack::Notifier.new(webhook_url) # 通知を送信 notifier.ping("test") end
Moookの実際の実装はこんな感じです。slackの通知処理は他でも使いそうだったのでapplication_controller
内に記述しました。また、Web hook URLは.env
を使って環境変数化しました。
application_controller.rb
# slack通知用メソッド def notice_slack(message) notifier = Slack::Notifier.new(ENV['SLACK_WEBHOOK_URL']) notifier.ping(message) end
page_controller.rb
def create @page = Page.new(page_params) @page.user_id = current_user.id @page.html = @page.get_html(@page.url) if @page.save redirect_to @page, notice: '新しいページを登録しました。' # ページ追加時に通知を行う notice_page_info(@page) else render :new end end def notice_page_info(page) # 本文を生成 message = <<~"EOS" Moookに新規ページが登録されました! 名前:#{page.name} URL:#{page.url} EOS # Slack通知処理を呼び出し notice_slack(message) end
実行例
こんな感じでSlackに通知を送ることが出来ましたヽ(´エ`)ノ