Capistranoのミニマム、シンプルな実行

これも先週末の作業記録です。

https://github.com/fjordllc/tutorial/wiki/%E3%83%87%E3%83%97%E3%83%AD%E3%82%A4%E7%B7%A8
チュートリアル課題、Unicorn の方は後々やることにして、Capistrano を今日は動かしてみることに。

業務で、デプロイはいつもsvn+rsyncベースのshellでやっている。デプロイツールは使ったことが無い。他社でけっこう使われているらしい Capistrano が気になっていた。

そもそもCapistrano ってどういうものなの?という素朴なギモンがあったけれど、↓を読んだら解消できた。考え方が日本語で分かりやすく読めて有り難い。それぞれ2007年、2008年の記事で、細かいところは違うので読み替える。
http://yugui.jp/articles/589
http://aligach.net/diary/20081218.html


例によって、行き詰まりながらの作業をそのまま記録。
https://github.com/capistrano/capistrano/wiki/2.x-Getting-Started

$ cap search_libs                
the task `search_libs' does not exist

写経したのに動かない? fオプションを付けてみると・・・

cap -f capfile search_libs
/Users/nana/.rbenv/versions/1.9.3-p286/lib/ruby/gems/1.9.1/gems/capistrano-2.13.5/lib/capistrano/configuration/loading.rb:183:in `find_file_in_load_path': no such file t)
        from /Users/nana/.rbenv/versions/1.9.3-p286/lib/ruby/gems/1.9.1/gems/capistrano-2.13.5/lib/capistrano/configuration/loading.rb:171:in `load_from_file'
(以下略)

動いたけれどエラーになる。
下記を Capfile という名前で保存して、cap search_libs コマンドをたたくと、ミニマムな実行ができました。
# 公式wikiのサンプルが動かないなんて〜と思ったけれど、この後でRakeの勉強をしたら、ビルドにおける保存ファイル名のルールはあまりにも常識だから、あえて書かれてはいなかったんだなと納得・・・。ファイル名を指定する場合は、cap -f search_libs search_libs なのね。

role :server, '普通にsshログインができるサーバのサーバ名'

set :user, 'ログインユーザ名'
set :password, 'パスワード'

desc "reporting"
task :search_libs, :roles => :server do
  run "ls -x1 /usr/lib"
end