Ответ 1
Не уверен в before/after
, но с Capistrano 3
вы всегда можете использовать синтаксис rake
и задачу вызова из другой задачи:
Rake::Task["mynamespace:mytask"].invoke(arg)
Здесь - это руководство по передаче параметров в задачу capistrano 3.
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]"
Не уверен в before/after
, но с Capistrano 3
вы всегда можете использовать синтаксис rake
и задачу вызова из другой задачи:
Rake::Task["mynamespace:mytask"].invoke(arg)
Вы можете использовать метод 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