hitode909の日記

趣味はマリンスポーツですの日記です

ローカルサーバーでエラーが出たら即座にSlackに投稿するPlackミドルウェア

Plack::Middleware::PostErrorToSlackというのを書いた.これは何かというと,アプリケーションの例外を自動的にSlackに投げるやつ.

使い方は簡単で,Incoming WebhookのURLを設定するだけ.あとは例外を起こすだけ.

enable "PostErrorToSlack",
    webhook_url => 'https://hooks.slack.com/services/...';

それで,Slackにこんなのが出る.

f:id:hitode909:20151123164522p:plain

誰が,どのブランチで,何をしたら,こういうエラーが出ましたよ,というのがSlackに投稿される.uriメソッド呼びたいけどなんかおかしそう,とか分かる.

これだと寂しいので,😇な絵文字などを設定すると,😇感が出て良くなる.

enable "PostErrorToSlack",
    webhook_url => 'https://hooks.slack.com/services/...',
    username => 'errorkun',
    icon_emoji => ':innocent:';

f:id:hitode909:20151123164535p:plain

リモート開発に便利

たとえば,アプリケーションを作っていて,デザイナはリモートにいる,という状況をイメージすると,「なんかエラーが出たんですけど」とか「なんて出てますか」とか会話することがイメージできる.
すぐに声かけてもらえばいいけど,自力で直そうとして失敗したり,声かけるのをためらったりして時間を消費すると,チーム全体の開発効率が下がってしまう.また,エラーエッセージを読むのもむずかしくて,必要な情報をうまくコピペして教えてもらうのも手間が大きい.
エラー出た瞬間に機械的にエンジニアが見れるところに流れると,見かけたエンジニアが「それはこうしたら直るよ」とか「セットアップスクリプトやり直してみて」とか話せるようになって便利.
それとか,作ってる途中の新機能のブランチにおけるエラーが流れてわくわく感が出たりする.


ブログチームで使ってて便利だったのでこのたびオープンソース化した感じです.良い文化な気がするのでご利用ください.

注意点としては,エラー出たときにSlackとの通信が終わるまでレスポンス返せなくなるので,プロダクションで有効にするのはやめたほうがよさそう.

なんでもSlackに流すと便利

はてなではデザイナもコマンドラインでgitを使っていて,GItHub Desktopを勧めてみたりしてるけど,「gitがおかしくなったんですけど」とか「pullしたらコンフリクトしたので助けて」みたいな話をよくまれにしている.
そういうときにも,以前はがんばって結果をコピペしてもらっていたけど,最近これも機械化してコマンドラインでSlackに流せるようにした.
アルバイトの人に簡単なスクリプトを書いてもらって,以下のようなコマンドで,実行結果がすぐにSlackに流れるようにした.

% git status | ./slack

gitがどうなってるかとか,nodeのバージョンが変じゃないかとか,PATHの感じを見たりとか,簡単に見られるようになって便利.

がんばろう感

そういう感じでリモート開発に立ち向かっています,という話でした.会話とか相談もだいたいSlackでやっていて,ビデオつなぎっぱなしにして常時顔を見たりはしてない.
必要に応じて簡単なツールを作って解決しようとしています.がんばろう.