Как я могу использовать пространство имен в зависимости от задачи 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

Ответ 1

Вы уже нашли решение (имя как строка).

Вы можете продлить этот ответ. Нет необходимости определять пространства имен и задачи с символами. Вы можете использовать строки.

Выполняя это, у вас есть преимущество одного и того же типа для определения и использования имен задач.

Ваш пример выглядит следующим образом:

namespace 'demolition' do
  task 'fire_bazooka' do
    puts "kaboom!"
  end
end

task 'photograph_destruction' => "demolition:fire_bazooka" do
  puts "snapping pics! yay!"
end

Ответ 2

Вычислено

Вам просто нужно указать имя как строку, например:

task :photograph_destruction => "demolition:fire_bazooka" do
  puts "snapping pics! yay!"
end

Update

Как указывали @mikeycgto и @mipadi, также будет работать цитируемый символ (обратите внимание на ведущий :):

task :photograph_destruction => :'demolition:fire_bazooka' do
  puts "snapping pics! yay!"
end