Как я могу написать задачу Rake, которая зависит от задачи с пространством имен и параметром

У меня есть грабли задачи, которая устанавливает и запускает neo4j.

rake neo4j:install[community-latest, stable]
rake neo4j:start[stable] where `stable` is environment.

Теперь я хочу написать еще одно рейк-задание rake setup и создать зависимость от rake neo4j:start[stable] а также rake neo4j:install[community-latest, stable]

Я пытался,

task :setup_dev_env => [:neo4j:install[community-latest, stable], :neo4j:start[stable]] do
    puts "Created Rake task"
end

очевидно, это не работает, потому что в вышеупомянутой задаче neo4j это пространство имен. Затем я изменил свою задачу на что-то вроде,

task :setup_dev_env => [:'neo4j:install[community-latest, stable]', :'neo4j:start[stable]'] do
    puts "Hello rake task working"
end

так что, по крайней мере, это решило мою проблему с neo4j пространство имен, но все еще не может решить проблему.

Когда я бегу rake setup_dev_env Это говорит

rake aborted!
Don't know how to build task 'neo4j:install[community-latest, stable]' (see --tasks)

2 ответа

Решение

Вы можете изменить эту задачу как:

desc 'Some description'
# setup_dev_env is dependent on neo4j:start
task :setup_dev_env,[:stable] => :environment do |t, arg|
param = arg[:stable].nil? ? 'stable' : arg[:stable]
Rake::Task['neo4j:start'].invoke(param)
  puts "Created Rake task"
end

Вы можете написать свою задачу следующим образом:

    desc 'Some description'
    # setup_dev_env is dependent on neo4j:start
    task :setup_dev_env,[:stable] => "neo4j:start" do
      puts "Created Rake task"
    end

Приведенные выше строки кода принимают параметр stable и передают его в neo4j:start. Чтобы использовать стабильный параметр в neo4j:start, вы должны получить следующее:

    desc 'Some description'
    # it will be inside namespace neo4j
    task :start, [:stable] do |t, args|
      puts "Created Rake task #{args.inspect}"
    end
Другие вопросы по тегам