Как я могу использовать пространство имен в зависимости задачи Rake? - PullRequest
28 голосов
/ 10 ноября 2011

При определении граблей можно использовать пространства имен, например:

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 ]

33 голосов
/ 10 ноября 2011

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

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

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

Ваш пример выглядит так:

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

task 'photograph_destruction' => "demolition:fire_bazooka" do
  puts "snapping pics! yay!"
end
12 голосов
/ 10 ноября 2011

разобрался

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

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...