Rista Tech Blog

株式会社リスタの技術?ブログ

cap deployでcurrentが変わったのを作業者に通知する

capistranoでアプリをデプロイすると、

各サーバ上のタイムスタンプディレクトリに新しいコードが配置され、

$ cd /var/www/joblist
$ ls releases/
20161016103403
20161016104310
20161016215218 
20161016231246 
20161016231528

currentディレクトリのシンボリックリンクをそこに向けることでコードの切り替えが行われます。

$ ls -l
lrwxrwxrwx 1 rista rista    40 Oct 17 08:15 current -> 
  /var/www/joblist/releases/20161016231528
...

で、サーバにログインしてcurrentで作業している時に誰か(たいてい自分)がデプロイすると、
currentが切り替わったのに気づかずそのまま作業しちゃって、

  • rails consoleで作業してるんだがなんか挙動がおかしいな。。。
  • デバッグコード仕込んだのになんもログが出ねぇ。。。

みたいなことになり、
しばらくしてあー、そうだった。。。とcurrentが変わったんだ。。。
と気づいてcurrent入り直したりしてます。

$ cd ..
$ cd current

いやー、これ辛いわー、とか思ってるの自分だけですかね。。。

まぁというわけで、

試しにwallで通知するようにしてみました

deploy.rbにこんなコードを追加します。

task :notify_current_changed do
  on roles(:all) do
    execute :wall, 'currentが変わったので注意してね!'
  end
end

namespace :deploy do
  after :published, :notify_current_changed

デプロイすると、

$ bundle exec cap staging deploy

作業中のターミナルで通知が出る!

f:id:mikeda:20161017085214p:plain:w500

まとめ

というわけでcap deployでcurrentが変わったことになかなか気づかなくて辛いのでwallコマンドで通知するようにしてみました。

でもrails consoleとかエディタ開いてるとこに出てくるとハンパなくウザいので、すぐやめそう。。。