tmux*1のセッション定義セットを作ってくれるやつ。
tmux は使っていて、ある場合には detach/attach も便利なのだけど、ターミナルアプリそのものを終了させたときに毎回作業状態*2を復帰させるのに時間がかかっていたので導入してみた。
参考
- Ruby - tmuxinatorで一瞬で開発環境を起動する - Qiita [キータ]
http://qiita.com/naoty_k/items/869b00fdde27c2225989
導入
gem で提供されているので gem install する。
$ gem install tmuxinator
Fetching: tmuxinator-0.6.6.gem (100%)
__________________________________________________________
..........................................................
Thank you for installing tmuxinator.
Make sure that you've set these variables in your ENV:
$EDITOR, $SHELL
You can run `tmuxinator doctor` to make sure everything is set.
Happy tmuxing with tmuxinator!
..........................................................
__________________________________________________________
Successfully installed tmuxinator-0.6.6
Installing ri documentation for tmuxinator-0.6.6
1 gem installed
ターミナルの再起動か、source ~/.zshrc で設定読み込み後に tmuxinator doctor で確認。
コマンド tmuxinator は短縮して mux でも利用可能にされている。
$ tmuxinator doctor Checking if tmux is installed ==> Yes Checking if $EDITOR is set ==> Yes Checking if $SHELL is set ==> Yes
定義追加
mux new <project名> で新しい定義を登録し、定義内容を編集する。
$ mux new dev # ここで $EDITOR に設定されたエディタが起動して定義ファイルの編集が始まる
初期状態で設定内容が書かれているので、適宜修正して書き替える。記述は yml で行う。
例:
# ~/.tmuxinator/dev.yml name: dev # カレントディレクトリ ~/work/dev にする root: ~/work/dev # windowを10枚(0〜9)開きたい windows: # window-0 はunicornとjobsを各paneで起動するために立ち上げ時にプロセスチェックしたい - server: layout: main-vertical panes: - ps aux | grep -v grep | grep unicorn # sudo bundle exec unicorn -c ./config/unicorn.rb -p 3000 - ps aux | grep -v grep | grep jobs # rake jobs:work - zsh: ll ./app - zsh: - zsh: - zsh: - zsh: - config: ll ./config - logs: ll ./log # tail -f ./log/development.log - spec: rake spec # rake spec - console: # rails c
layout には tmux でサポートされているレイアウト*3が指定できる。
保存すれば準備は完了する。
定義ファイルの保存場所は以下にあるので、dotfile リポジトリなどで管理しておけば複数端末でも共通して利用できる。
定義の修正もこのファイルを直接編集すれば良い。ただし project名 はファイル名を指しているようなので、project名 を変更したい場合はファイル名ごと修正する必要がある。
$ ls ~/.tmuxinator ← ここ dev.yml
利用
mux listで登録した定義の一覧が見られる。mux start <project名>で定義を利用して新しいセッションを開始する。
その他、コマンド mux をオプションなど何も付けずに実行すると、利用できるコマンドの簡易ヘルプが見られる。
*1:ターミナルマルチプレクサのひとつ。screen の同類
*2:常に window 10枚開いて、0番はサーバ起動、7番はログのtail、…とかだいたい決めて使っていたのだけど、いちいち window 10枚起動するとこからして面倒だった。
*3:tmux のマニュアル https://bytebucket.org/ns9tks/tmux-ja/wiki/tmux-ja.html の『以下のレイアウトがサポートされています:』以下の一覧を参照。