2014-02-05 2 views
10

Here - это учебное пособие по передаче параметров в задачу capistrano 3.Как передать аргументы Capistrano 3 задачи в 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 

Может выполняться с:

$ cap staging "task:invoke[arg]" 

Как я могу использовать это в моем deploy.rb? Следующая работа не работает.

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, позволяющая выполнять задачу только в первый раз, это может быть ue для задачи с параметрами, потому что вы можете повторно использовать ее с другим значением. Чтобы сделать это, вам нужно снова включить задачу:

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

Смежные вопросы