switchtower チュートリアル議事録

ちょっと時間があきましたが、switchtowerセッションの議事録をば。

  • なにはともあれ本家のチュートリアルがお薦め。
  • switchtowerの動きの解説
    • --apply-toではconfig/deploy.rbとlib/tasks/switchtower.rakeが生成される。
    • deployなどの、特に設定がいらないタスクはswitchtower-0.9.0/lib/swtichtower/recipes/standard.rbにまとまっている。読んでみるとかなり勉強になります。
    • lib/tasks/switchtower.rakeを読むと分かるが、rakeで実行されるのは system "switchtower -vvvv(args)"というタスク。漢らしすぎる。
  • 実際にswitchtowerを使うにあたって。
    • まず試してみる上で直さなきゃいけないのはdeploy.rbのわずか6行。
      • set :application,"hoge"
      • set :repository, "file://path/to/your/repository"
      • role :web, "localhost"
      • role :app, "localhost"
      • role :db, "localhost"
      • set :deploy_to, "/somewhere/you/wanto/to/deploy/to"
    • switchtowerを深く知るにはrakeの知識が必須。
      • switchtower.rakeはともかく、そこから呼ばれるdeploy.rbもなかなかいいサンプルかも。
      • rakeファイルは結局Rubyスクリプト。無理にタスクにするよりもdef 〜 end でやったほうが楽なことも多いよ(thanks to かくたにさん)。
  • 20分でできるswitchtower
    • あとで別途まとめます(予定)。
  • switchtowerを業務で使うには
    • ドキュメント少な過ぎ。
      • 公式にあるドキュメントはなかなか悪くない。switchtowerを使うだけなら結構よいと思う。英語だけど。
    • 定型作業楽にしてくれる。細かく頻繁なリリースのお供に最適。
    • rollbackでの切り戻しもちゃんとできる。
      • symlinkの張り直しではなく、rollback対象をばっさりと消すのがswitchtower的漢らしさ。
    • 本番環境へのdeployなのに、本番環境に.svnが残るのはどうかと思う。
      • 同意が3票ほど。
      • ちょっと調べてみましたが、どう見てもハードコード*1です。ありがとうございました。
    command = "#{svn} co -q -r#{configuration.revision} \
               #{configuration.repository} #{actor.release_path}
  • まとめ
    • switchtowerもrakeも便利なのでがんがん使いましょう、と。

*1:switchtower-0.9.0/lib/switchtower/scm/subversion.rb #72 改行はもろはし。