Blogaomu

WEBアプリケーション開発とその周辺のメモをゆるふわに書いていきます。

#shibuyarb 20140319 に参加してきた

渋谷.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_commandsshコマンドのオプションなどいい感じに作ってくれてコマンド文字列を生成する
  • 結局はssh hoge@example.com -- <command>を実行している

method_missing使ってるのは、なるほどーと感心しました。 あとmina/rails.rbに普通にtaskの定義が書いてあって、rails.rakeとしなかったのは意図的なんだろうか?と思いました。 shibuya.rbは初参加となりましたが、次回も参加したいなーと思っています!