はじめに
railsのサーバ起動は rails s -d
とすることでバックグラウンド起動ができる。
ところが、バックグラウンドで起動したrailsサーバを終わらすには、プロセス番号を指定してkillしないといけない。
それをalias指定して1コマンドで実現するところが今回のゴール。
コード
最短は下記コマンドで可能。
.bashrc
$ cat tmp/pids/server.pid | xargs kill -9
これにちょっと成功 or 失敗メッセージとかを書き足すと下記。
(メッセージとかはお好みにブレンドしてください。)
.bashrc
alias rails-server-kill="cat tmp/pids/server.pid > /dev/null 2>/dev/null && (cat tmp/pids/server.pid 2> /dev/null | xargs kill -9 2> /dev/null && echo \"[OK] Rails server was killed...\" || echo \"[NG] Already exit...\") || echo \"[NG] Move to rails root directory path.\""
解説
Railsをバックグラウンド起動した際のプロセス番号は tmp/pids/server.pid
に書いてあるので、その番号を kill
すればいいらしい(正式な方法とかあれば教えてください…)。
ただ、最短コマンドだと成功時に何も言わなかったり、失敗時にはcatやkillコマンドのエラーメッセージとかがが出て不親切なので、色々コネコネして、下記仕様に。
- 成功時は成功メッセージ
- 失敗時はエラーメッセージ
- プロセスがすでに死んでいる場合はその旨を表記
- 現ディレクトリがrailsルートじゃない場合は移動を促すメッセージを表記
||
とか &&
とか 2> /dev/null
とかが何かは後記している参考文献を見ていただければ。
あとがき
小さなネタで申し訳ないけれど、このような細かい工夫が生産性向上につながると信じてます……。