namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
如何在此上下文中获得:baseline
符号?如何获取Rake中的当前名称空间?
namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
如何在此上下文中获得:baseline
符号?如何获取Rake中的当前名称空间?
namespace :baseline do |namespace|
scope = namespace.instance_variable_get("@scope")
INDEX_DIR = index(scope)
task(:foo) ...
end
现在有一个更清洁的方式:我需要这个定义动态任务,所以没有命名空间传递给块
namespace :baseline do
scope = Rake.application.current_scope
puts scope.path
end
是一大利好。
除了Dmitris answer与Rake.application.current_scope
:
namespace :baseline do |namespace|
scope = namespace.scope.path
#...
end
scope
将"baseline"
(字符串,而不是请求的符号)。
但在耙,你可以定义符号或字符串的命名空间,你也可以这样定义:
namespace 'baseline' do |namespace|
scope = namespace.scope.path
#...
end
范围将与两个定义是相同的。
如果您确实需要符号,您可以使用scope.to_sym
。
然后你可以使用它来访问'scope',它将是这个任务嵌套在其中的命名空间的数组:'namespace.instance_variable_get(“@ scope”)' –
很酷,添加到答案中 – Nerian
啊,好老的丑陋的黑客;-) – Reactormonk