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