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が切り替わったのに気づかずそのまま作業しちゃって、
みたいなことになり、
しばらくしてあー、そうだった。。。と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
作業中のターミナルで通知が出る!
まとめ
というわけでcap deployでcurrentが変わったことになかなか気づかなくて辛いのでwallコマンドで通知するようにしてみました。
でもrails consoleとかエディタ開いてるとこに出てくるとハンパなくウザいので、すぐやめそう。。。