2011-12-06 43 views

回答

8
namespace :baseline do |namespace| 
    scope = namespace.instance_variable_get("@scope") 

    INDEX_DIR = index(scope) 

    task(:foo) ... 
end 
+3

然後你可以使用它來訪問'scope',它將是這個任務嵌套在其中的命名空間的數組:'namespace.instance_variable_get(「@ scope」)' –

+0

很酷,添加到答案中 – Nerian

+2

啊,好老的醜陋的黑客;-) – Reactormonk

4

現在有一個更清潔的方式:我需要這個定義動態任務,所以沒有命名空間傳遞給塊

namespace :baseline do 
    scope = Rake.application.current_scope 
    puts scope.path 
end 

是一大利好。

1

除了Dmitris answerRake.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