イフブロ

イフブロ

インフラエンジニアのブログ

CapistranoTaskに引数を指定可能にする

Capistranoのタスクは、引数取らないほうがいいかなとは思ってるんですが、
start | stop | restart | status 位は取れたほうがむしろコードが綺麗だよね。って事でやってみました。

> vi lib/capistrano/tasks/deamon.rake
namespace :deamon do
  desc "service deamons ctrl"
  task :service_a, :command do | task, args |
    on roles(:all) do
      puts "process #{args[:command]}"
    end
  end
end
> cap pdev deamon:service_a[start] ROLES=web app=appname --trace
** Invoke pdev (first_time)
** Execute pdev
** Invoke load:defaults (first_time)
** Execute load:defaults
config/appname_deploy.rb:15: warning: class variable access from toplevel
config/appname_deploy.rb:24: warning: class variable access from toplevel
** Invoke deamon:pa_web (first_time)
** Execute deamon:pa_web
process start

表示されましたねー。 これでコマンド側に渡せそう。

(2016/04/01追記) invokeで実行する時は以下の様にする。

invoke "deamon:service_a", "stop"