Ruby 如何在Rake中获取当前名称空间?

Ruby 如何在Rake中获取当前名称空间?,ruby,rake,Ruby,Rake,在这种情况下,如何获得:基线符号?现在有一种更干净的方法: namespace :baseline do INDEX_DIR = index(:baseline) # context task(:foo) ... end 名称空间:基线do 范围=Rake.application.current\u范围 放置scope.path 结束 我需要它来定义动态任务,因此不必将名称空间传递给块是一个很大的优点。除了使用Rake.application.current\u scope: nam

在这种情况下,如何获得
:基线
符号?

现在有一种更干净的方法:

namespace :baseline do
  INDEX_DIR = index(:baseline) # context
  task(:foo) ...
end
名称空间:基线do
范围=Rake.application.current\u范围
放置scope.path
结束
我需要它来定义动态任务,因此不必将名称空间传递给块是一个很大的优点。

除了使用Rake.application.current\u scope

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

  INDEX_DIR = index(scope)

  task(:foo) ...
end
范围
将是
“基线”
(字符串,而不是请求的符号)

但在rake中,可以用符号或字符串定义名称空间,也可以这样定义:

namespace :baseline do |namespace|
  scope = namespace.scope.path
  #...
end
两种定义的范围相同


如果您确实需要符号,可以使用
范围。要使用
范围,您可以使用它访问
范围
,该范围将是嵌套此任务的命名空间数组:
命名空间。实例变量\u get(“@scope”)
namespace 'baseline' do |namespace|
  scope = namespace.scope.path
  #...
end