Railsで作ってるWebアプリのエラーや、ご意見フォームからの投稿をSlackにとりあえず流したいとき用。
以下のgemを利用する。
aki017/slack-ruby-gem
Gemfile
gem 'slack-api'
bundle install
したら、config/intializers
下に設定ファイルを置く。
config/intializers/slack_api.rb
require 'slack'
Slack.configure do |config|
config.token = "<Slack Authentication Token>"
end
トークンは、以下のページで取得。
Slack Web API | Slack
あとは、実際にSlackに送信する部分を記述するのみ。
例えばemail
, message
というプロパティを持つ、Opinion
というモデルのインスタンスの情報を送るとすると、適当だがこんな感じだろうか。
app/controllers/opinions_controller.rb
class OpinionsController < ApplicationController
def create
@opinion = Opinion.new(params[:opinion])
if @opinion.save
notify_to_slack
...
else
...
end
end
private
def notify_to_slack
text = <<-EOC
-----------------------------
[#{Rails.env}] 新しいご意見が来ました。
▼メールアドレス
# {opinion.email}
▼内容
# {opinion.message}
EOC
Slack.chat_postMessage text: text, username: "Opinion Notifier", channel: "#opinion"
end
end
Slack.chat_postMessage
には引数として、text
(メッセージ), username
(表示名), channel
(channel名)が渡せる。text
とchannel
は必須。
これで通知がSlackに来る。
簡単な通知ならこれで良さ気。