我有rake任务安装并启动neo4j。
rake neo4j:install[community-latest, stable]
rake neo4j:start[stable] where `stable` is environment.
现在我想编写另一个类似rake setup
的rake任务,并创建对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)
答案 0 :(得分:0)
您可以按照以下方式编写任务:
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
答案 1 :(得分:0)
您可以将该任务修改为:
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