如何编写依赖于具有命名空间和参数的任务的 Rake 任务
How can I write a Rake task which depends on task with namespace and parameter
我有安装和启动 neo4j 的 rake 任务。
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)
您可以按照以下方式编写您的任务:
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
您可以将该任务修改为:
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
我有安装和启动 neo4j 的 rake 任务。
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)
您可以按照以下方式编写您的任务:
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
您可以将该任务修改为:
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