Here是一个如何将参数传递给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]"
答案 0 :(得分:4)
不确定before/after
,但使用Capistrano 3
,您始终可以使用rake
语法并在其他任务中调用任务:
Rake::Task["mynamespace:mytask"].invoke(arg)
答案 1 :(得分: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