【发布时间】:2011-05-19 07:58:25
【问题描述】:
如何从另一个调用 Capistrano 任务?
例如:
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
【问题讨论】:
如何从另一个调用 Capistrano 任务?
例如:
task :foo do
# stuff
end
task :bar do
# INVOKE :foo
end
【问题讨论】:
记录在案:在 Capistrano 3 中,使用 invoke(),例如
desc "Task that does something"
task :do_something do
invoke 'namespace:task'
end
【讨论】:
invoke 必须直接在task 内,不能在on、within 或其他块内。否则将无法正常工作。
你可以使用命名空间来做到这一点:
namespace :test do
task :one do
end
task :two do
test.one
#or just directly call it:
one
end
end
请注意您使用的名称,不要覆盖某些重要功能。
【讨论】:
task :d, :roles => [:app] do deploy end
test 命名空间,因为它会影响具有该名称的现有 Capistrano 方法。你会得到一个 ArgumentError 提出。
通常你通过定义依赖来做到这一点:
before :bar, :foo
【讨论】:
你也可以使用Rake::Task["namespace:task"].invoke,这行得通
【讨论】:
如果任务位于另一个命名空间中,您可以改用find_and_execute_task。
【讨论】: