Nat*_*ong 28 ruby rake namespaces
在定义rake任务时,可以使用名称空间,如下所示:
namespace :demolition do
task :fire_bazooka do
puts "kaboom!"
end
end
Run Code Online (Sandbox Code Playgroud)
这可以称为rake demolition:fire_bazooka.
也可以为任务指定先决条件,如下所示:
# Single prerequisite
task :fire_bazooka => :load_bazooka do ....
# Multiple prerequisites
task :fire_bazooka => [:safety_check, :load_bazooka]
Run Code Online (Sandbox Code Playgroud)
但是,如何使用命名空间任务作为先决条件?显然,这不起作用:
task :photograph_destruction => :demolition:fire_bazooka
Run Code Online (Sandbox Code Playgroud)
knu*_*nut 33
您已经找到了解决方案(名称为字符串).
你可以扩展这个答案.无需使用符号定义名称空间和任务.你可以使用字符串.
这样做,您可以获得相同类型的优势来定义和使用任务名称.
您的示例如下所示:
namespace 'demolition' do
task 'fire_bazooka' do
puts "kaboom!"
end
end
task 'photograph_destruction' => "demolition:fire_bazooka" do
puts "snapping pics! yay!"
end
Run Code Online (Sandbox Code Playgroud)
Nat*_*ong 12
你只需要将名称作为字符串,如下所示:
task :photograph_destruction => "demolition:fire_bazooka" do
puts "snapping pics! yay!"
end
Run Code Online (Sandbox Code Playgroud)
正如@mikeycgto和@mipadi指出的那样,带引号的符号(注意领先:)也可以起作用:
task :photograph_destruction => :'demolition:fire_bazooka' do
puts "snapping pics! yay!"
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7407 次 |
| 最近记录: |