定义rake任务时,可以使用名称空间,如下所示:
namespace :demolition do
task :fire_bazooka do
puts "kaboom!"
end
end
这可以像rake demolition:fire_bazooka
一样调用。
还可以指定任务的先决条件,如下所示:
# Single prerequisite
task :fire_bazooka => :load_bazooka do ....
# Multiple prerequisites
task :fire_bazooka => [:safety_check, :load_bazooka]
但如何使用命名空间任务作为先决条件?这显然不起作用:
task :photograph_destruction => :demolition:fire_bazooka
答案 0 :(得分:33)
您已找到解决方案(名称为字符串)。
你可以扩展这个答案。无需使用符号定义名称空间和任务。你可以使用字符串。
执行此操作,您可以获得相同类型的优势,以便定义和使用任务名称。
您的示例如下所示:
namespace 'demolition' do
task 'fire_bazooka' do
puts "kaboom!"
end
end
task 'photograph_destruction' => "demolition:fire_bazooka" do
puts "snapping pics! yay!"
end
答案 1 :(得分:12)
您只需将名称作为字符串,如下所示:
task :photograph_destruction => "demolition:fire_bazooka" do
puts "snapping pics! yay!"
end
正如@mikeycgto和@mipadi指出的那样,带引号的符号(注意前导:
)也可以起作用:
task :photograph_destruction => :'demolition:fire_bazooka' do
puts "snapping pics! yay!"
end