渋谷.rb[:20140319] on Zusaar に参加してきました。 エントリー書いてないだけかもしれないけど久しぶりの勉強会です。
他の参加者のLTを聞いたりしながら私はMinaのソースコードを読んでいました。 MinaというのはRubyで作られているデプロイツールです。以下の記事が詳しいです。
デプロイ用gem CapistranoとMinaの比較 - 130単位
Ruby - Minaというデプロイ用のツール... - Qiita
How To Deploy With Mina: Getting Started | DigitalOcean
How To Use Mina to Deploy a Ruby on Rails Application | DigitalOcean
普段の作業においてはこのMinaを使ってアプリケーションをデプロイしています。 しかし、今まで触りしかソースコードを見てなかったので改めて読んでみようと思いました。
以下メモです。全部のファイルは時間が無くて読めませんでした。
- Rakeがベースになってる
- Mina::Helpersを見てみる(deploy.rb内で良く使うメソッド)
- コマンドをqueueできる(queue, queue!メソッド)
- queueに入ったコマンドをSSHで実行する
in_directory
メソッドは設定したディレクトリにcdしてブロック内で定義したコマンドを実行することができる- queueの保存先を分けることができる(toメソッド)
set
は@settings
にkey, valueを割り当てているmethod_missing
が@setting
のgetterの役割になっているset :foo, 'bar'
と定義しておくとfoo
で'bar'
を参照できる
-S
(simulate mode) というコマンドオプションがある。- dry-run的なやつ
capture
メソッドでSSHで実行したコマンドの出力が返ってくる- いくつかのHelperが存在している
- ここからはMina::SshHelpers
ssh_command
は sshコマンドのオプションなどいい感じに作ってくれてコマンド文字列を生成する- 結局は
ssh hoge@example.com -- <command>
を実行している
method_missing使ってるのは、なるほどーと感心しました。
あとmina/rails.rb
に普通にtaskの定義が書いてあって、rails.rakeとしなかったのは意図的なんだろうか?と思いました。
shibuya.rbは初参加となりましたが、次回も参加したいなーと思っています!