2014-02-05 131 views
10

Here是一個如何將參數傳遞給capistrano 3任務的教程。如何將參數傳遞給deploy.rb中的Capistrano 3任務

$ cap staging "task:invoke[arg]" 

如何我在deploy.rb使用:

namespace :task do 
    desc 'Execute the specific cmd task' 
    task :invoke, :command do |task, args| 
    on roles(:app) do 
     execute :cmd, args[:command] 
    end 
    end 
end 

可與執行?以下不起作用。

before :started, "task:invoke[arg]" 

回答

4

不確定before/after,但Capistrano 3你可以隨時使用rake語法和另一個任務內調用任務:

Rake::Task["mynamespace:mytask"].invoke(arg) 
3

您可以使用invoke方法:

before :started, :second_param do 
    invoke 'task:invoke', 'arg' 
end 

還有一件事可能會有幫助,capistrano和rake允許第一次執行任務,這可能是常見問題因爲任務帶有參數,所以你可以重複使用不同的值。要允許這樣做,您需要重新啓用該任務:

namespace :task do 
    desc 'Execute the specific cmd task' 
    task :invoke, :command do |task, args| 
    on roles(:app) do 
     execute :cmd, args[:command] 
     task.reenable    # <--------- this how to re-enable it 
    end 
    end 
end 
+0

在第一個示例中使用Capistrano v3會返回「錯誤的參數數量(1代表2+)」。 – marcovtwout

+0

你能舉個例子嗎? 「這是工作在我的機器上的」 :) –

+0

在最新Capistrano的主,deploy.rb的底部: ''' 之前 「部署:更新」 別 #command這裏 結束 ''' – marcovtwout