给出如下内容:
namespace :my_tasks do
task :foo do
do_something
end
task :bar do
do_something_else
end
task :all => [:foo, :bar]
end
Run Code Online (Sandbox Code Playgroud)
我如何:all成为默认任务,以便运行rake my_tasks会调用它(而不是必须调用rake my_tasks:all)?
Szy*_*ski 85
将它放在命名空间之外,如下所示:
namespace :my_tasks do
task :foo do
do_something
end
task :bar do
do_something_else
end
end
task :all => ["my_tasks:foo", "my_tasks:bar"]
Run Code Online (Sandbox Code Playgroud)
另外......如果您的任务需要参数,那么:
namespace :my_tasks do
task :foo, :arg1, :arg2 do |t, args|
do_something
end
task :bar, :arg1, :arg2 do |t, args|
do_something_else
end
end
task :my_tasks, :arg1, :arg2 do |t, args|
Rake::Task["my_tasks:foo"].invoke( args.arg1, args.arg2 )
Rake::Task["my_tasks:bar"].invoke( args.arg1, args.arg2 )
end
Run Code Online (Sandbox Code Playgroud)
请注意,在第二个示例中,您可以将任务调用与命名空间相同的名称,即'my_tasks'
Shy*_*ada 49
不是很直观,但您可以拥有一个名称空间和任务,它们可以有效地为您提供所需的名称.例如
namespace :my_task do
task :foo do
do_foo
end
task :bar do
do_bar
end
end
task :my_task do
Rake::Task['my_task:foo'].invoke
Rake::Task['my_task:bar'].invoke
end
Run Code Online (Sandbox Code Playgroud)
现在您可以运行命令,
rake my_task:foo
Run Code Online (Sandbox Code Playgroud)
和
rake my_task
Run Code Online (Sandbox Code Playgroud)
如果命名空间中有很多任务,我建议你使用它.
task :my_tasks do
Rake.application.in_namespace(:my_tasks){|x| x.tasks.each{|t| t.invoke}}
end
Run Code Online (Sandbox Code Playgroud)
然后您可以通过以下方式运行命名空间中的所有任务:
rake my_tasks
Run Code Online (Sandbox Code Playgroud)
这样,在将新任务添加到该命名空间时,您无需担心更改:all任务.
| 归档时间: |
|
| 查看次数: |
24218 次 |
| 最近记录: |