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