如何在Rake任务依赖项中使用命名空间?

时间:2011-11-10 16:29:27

标签: ruby namespaces rake

定义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

2 个答案:

答案 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