hitode909の日記

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

cap shellにヒストリ機能をつけるGem作った

デプロイツールのCapistranoに含まれる便利コマンドであるcap shellというので,いい感じにサーバーにsshみたいなことができる.サーバーのIPを書かずに,プロキシサーバーにつないでログを見るとか,設定を観察するとかできて便利.
しかし,cap shellは,順番に標準入力を受け取ってサーバーで実行するだけという素朴な実装方法で,ヒストリを保存してくれない,という問題がある.
毎回アクセスログのファイル名をがんばって書いたりする必要があった.


capistrano_shell_historyというGemを作った.これを使うと,cap shell上で実行したコマンドの履歴がファイルに保存されて,普通のシェルと同じ感じに,次にcap shellしたときに履歴が復元される.Readlineの機能が使えるので,Ctrl-rでログを検索とかできる.


使い方はREADMEに書いてある.Capfileでrequireするだけで使えるので簡単.~/.caprcに書いておくと,プロジェクトを問わずロードされて便利.
実装方法は簡単で,before shellでファイルの内容をReadlineのヒストリに設定して,after shellでヒストリをファイルに書き出している.そんなに悪いことしてない.
Bundlerで管理する場合はrequire: falseしないといけないのがださい.これしないとわけわからないエラーが出てびっくりする.
Capistrano使ってたら便利だと思う.ご利用ください.