Capistranoのタスク名に応じて動作を変える

公開日時 akira Tue, 02 Dec 2008 09:28:00 GMT

Capistranoで実行中のタスクにはcurrent_taskでアクセスできる。これを使うと、タスク名に応じて挙動を変えるというようなこともできる。以下はRubyをインストールするためのスケルトン(のつもり)。

task :real_install_ruby do
  run "echo installing ruby #{install_ruby_version}..."
  # ...
  run "echo done"
end

def install_ruby_by_task(task)
  unless /_(\d_\d_\d)(?:_(p\d+))?$/ =~ task.name.to_s
    raise Error,
      "unexpected taskname: #{task.fully_qualified_name}"
  end

  pl = $2 ? "-#{$2}" : ''
  verstr = $1.split(/_/, 3).join('.') + pl
  set :install_ruby_version, verstr
  real_install_ruby 
end

task :install_ruby_1_8_7_p72 do
  install_ruby_by_task(current_task)
end

ある程度は実装に踏み込んでいることになってしまうので、多用すると後ではまるかもしれない。

トラックバック

トラックバックリンク:
http://arika.org/diary/trackbacks?article_id=capistrano%E3%81%AE%E3%82%BF%E3%82%B9%E3%82%AF%E5%90%8D%E3%81%AB%E5%BF%9C%E3%81%98%E3%81%A6%E5%8B%95%E4%BD%9C%E3%82%92%E5%A4%89%E3%81%88%E3%82%8B&day=02&month=12&year=2008

コメント

Leave a comment

コメント