ツール

SlackでHubotを使う

REMPチームで今までチャットシステムにLingrを利用していたのだけど、会社でもSlackの試用を始めたりしているので丸っとSlackに移動させようとLingrで動かしていたHubotをSlackに移した。

Slack自体がHubotを稼働させるためのintegrationとして準備しているのでほとんど障壁が高く無かったのだけど、一応動かした際のメモ。

1. Integrationを追加

https://〜.slack.com/services の Integrations で Hubot を追加する

2. 環境変数の設定

  1. のIntegrationsで追加すると Setup Instructions として表示される HUBOT_SLACK_TOKEN の値をHubotが稼働しているサーバーへ環境変数として追加する。

3. npmパッケージのhubot-slack追加

Hubotのプロジェクトに slackhq/hubot-slack · GitHub を追加する。

$ npm install hubot-slack --save

4. 起動時にslackアダプタを指定

Hubotを起動させる際にアダプタとしてslackを指定する。起動時に -a のオプションを指定する。

$ bin/hubot -a slack

Hubot自体も、Hubotを永続化させるのに利用しているsupervisorの設定もChefのテンプレートとしてリポジトリ管理してたのでその辺りも我ながらよかった。*1

*1:というか普通はきっとherokuで動かしてるんだろうな。

minaでデプロイステージを切り替える

REMPSTORYBOARDS ではminaを利用してデプロイを行っているのだけど、これらのアプリケーションでもステージング環境を扱いたいなと思った時に切り替えをどの様にすればよいのか調べたのでメモ。

以下の様な感じで切り分けができる。

case ENV['to']
when 'staging'
set :deploy_to, '/foo/bar/storyboards_staging'
else
set :deploy_to, '/foo/bar/storyboards'
end

これでデプロイする際に

$ bundle exec mina deploy to=staging

とすることでパラメータとして渡すことができるので、これでデプロイ先を切り分けることができる。

evacでPushbulletに出力する

「Pushbullet」最高。 パソコン、スマホ間のデータ送信が信じられないほどラクに! : ギズモード・ジャパンという記事が目についたので便乗エントリ。

evac - Node.js based simple aggregator -を使うとPushbulletのAPIを使ってプッシュ通知することができます。Pushbulletのトークンはアカウントページで確認できます。

{
"in": {
"staticWord": {
"text": "Pushbullet test."
}
},
"out": {
"pushbullet": {
"device": "******@gmail.com",
"token" : "*******",
"title": "テスト",
"mode": "note"
}
}
}

の様なレシピを用意して、以下の様にevacを実行するとプッシュ通知されます。PushbulletにiPhoneChromeを今回は登録しているので下の様にChromeのポップアップと同時にiPhoneにもプッシュ通知が届きます。

$ evac -v recipe/test_pushbullet.js

今回の例は素朴に文字列をそのまま渡すだけですが、こんな感じで何かをトリガーにして、Pushbullet経由で通知することができます。便利。


ターミナル上で確認できるCUIベースのダッシュボードが作れる"blessed-contrib"

blessed-contribというCUIベースのダッシュボードを作れるnpmパッケージを触ってみた。以前紹介したdashingはブラウザで閲覧できましたが、これはターミナル上で確認できます。素敵。

百聞は一見にしかずということで下のGIFアニメ参照。

tmuxで区切った画面の右側にblassed-contribで作ったダッシュボードを表示させています。

ダッシュボードの中身は

  • 左側に利用しているMacのCPU温度の折れ線グラフ(2秒毎に更新)
  • 右下にCPU温度の値(1秒毎に更新)
  • 右上にredisのログ(ログ更新毎)

が表示されています。redis-cliからflushdbするとダッシュボードの右上にredisのログが流れていくのや、左上でredisへ書き込みを行うプログラムを走らせるとCPU温度のグラフが右肩上がりしていきます。

具体的にダッシュボードを作るには以下の様なスクリプトで実現をすることができます。

CUIベースでも十分表現力あるので、ターミナル上でいろいろ眺めるダッシュボードを作ってみたい方はお試しを。