読者です 読者をやめる 読者になる 読者になる

Wakerを動かす

github.com

認証まわりのセットアップ

Google Developer Consoleで適当なプロジェクトを作って、OAuth 2.0 クライアント IDを発行する。

f:id:winebarrel:20160915192114p:plain

  • 承認済みの JavaScript 生成元:
    • http://localhost:5000
  • 承認済みのリダイレクト URI:
    • http://localhost:5000/auth/google_oauth2/callback

.envファイルに認証情報を書いておく。

echo 'GOOGLE_CLIENT_ID=...' >> .env
echo 'GOOGLE_CLIENT_SECRET=...' >> .env
echo 'GOOGLE_DOMAIN=...' >> .env # If you restrict to use Google Apps doma

セットアップ

まず、bundle install

$ bundle install
Using rake 11.2.2
...
Bundle complete! 31 Gemfile dependencies, 113 gems now installed.
Use `bundle show [gemname]` to see where a bundled gem is installed.

MySQLを起動。

$ mysql.server start
Starting MySQL
.. SUCCESS!

Redisも起動。

$ redis-server &
[1] 9337
...
[9337] 15 Sep 19:14:36.797 * The server is now ready to accept connections on port 6379

データベースをセットアップ。

]$ rake db:create
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
[DEPRECATION] `last_comment` is deprecated.  Please use `last_description` instead.
$ rake db:migrate
...
== 20160914063913 AddCommentIndex: migrated (0.0592s) =========================

サーバを起動。

$ bundle exec foreman start -f Procfile.docker
...
19:28:49 web.1                | * Listening on tcp://0.0.0.0:5000
19:28:49 web.1                | Use Ctrl-C to stop```

ユーザのセットアップ

http://localhost:5000/にアクセスすると、Googleアカウントで認証される。

f:id:winebarrel:20160915193024p:plain

ただし認証直後はユーザは非アクティブ。

f:id:winebarrel:20160915193150p:plain

なので、DBをいじってアクティベートする。

$ bundle exec rails runner 'User.first.update!(active: true)'

再度アクセスすると、トップ画面が表示される。

f:id:winebarrel:20160915193404p:plain

Wakerのセットアップ

Escalation Seriesを作る

f:id:winebarrel:20160915193552p:plain

Escalationを作る

f:id:winebarrel:20160915193708p:plain

Topicを作る

f:id:winebarrel:20160915194240p:plain

Notifier Providerを作る

今回はRailsLogger。

f:id:winebarrel:20160915193833p:plain

どういうProviderがあって、どういう設定値を必要としているかは、notifier_provider.rbを見るとよい。

Notifierを作る

今回はRailsLoggerなので、詳細な設定とユーザへのひも付けは不要。

f:id:winebarrel:20160916003738p:plain

動作確認

以下のようにcurlAPIをたたく。

$ curl -s -XPOST "localhost:5000/topics/1/mailgun.json" -d 'subject=foo&body-plain=bar'
{}

するとIncidentが作成されて

f:id:winebarrel:20160915195622p:plain

ログの方に(わかりにくいけど)

Notification: opened

と出力される。 default.text.erbをいじれば、もう少し詳細な情報を出力できる。

MailgunからIncidentを作る

Routeのとこで

f:id:winebarrel:20160915203340p:plain

こんな感じでStore and notify設定してMailgun宛てにメール投げれば、Incidentされる…はず。

IncidentのイベントをSlackに通知する

Incoming Webhookを作る

適当にIncoming Webhookを作る。

f:id:winebarrel:20160915202443p:plain

Notifier Providerを作る

f:id:winebarrel:20160915202730p:plain

Notifierを作る

f:id:winebarrel:20160916003907p:plain

動作確認

curlでIncidentを作ってみる。

 curl -XPOST "localhost:5000/topics/1/mailgun.json" -d 'subject=hello&body-plain=world'
{}

Slackに通知が来る。

f:id:winebarrel:20160915202941p:plain