namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
如何在此上下文中获取:baseline
符号?
答案 0 :(得分:8)
namespace :baseline do |namespace|
scope = namespace.instance_variable_get("@scope")
INDEX_DIR = index(scope)
task(:foo) ...
end
答案 1 :(得分:4)
现在有一种更清洁的方式:
namespace :baseline do
scope = Rake.application.current_scope
puts scope.path
end
我需要这个来定义动态任务,所以不必将命名空间传递给块是一个很大的优点。
答案 2 :(得分:1)
除Dmitris answer与Rake.application.current_scope
之外:
namespace :baseline do |namespace|
scope = namespace.scope.path
#...
end
scope
将是"baseline"
(字符串,而不是请求的符号)。
但是在rake中你可以用符号或字符串定义命名空间,你也可以这样定义:
namespace 'baseline' do |namespace|
scope = namespace.scope.path
#...
end
两种定义的范围都相同。
如果您确实需要符号,可以使用scope.to_sym
。