namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
¿Cómo puedo obtener el símbolo :baseline
en este contexto?¿Cómo obtengo el espacio de nombres actual en Rake?
namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
¿Cómo puedo obtener el símbolo :baseline
en este contexto?¿Cómo obtengo el espacio de nombres actual en Rake?
namespace :baseline do |namespace|
scope = namespace.instance_variable_get("@scope")
INDEX_DIR = index(scope)
task(:foo) ...
end
Hay una forma mucho más clara ahora:
namespace :baseline do
scope = Rake.application.current_scope
puts scope.path
end
Necesitaba esto para definir tareas dinámicas, así que no tener que pasar el espacio de nombres para el bloque es una gran ventaja.
Además de Dmitris answer con Rake.application.current_scope
:
namespace :baseline do |namespace|
scope = namespace.scope.path
#...
end
scope
será "baseline"
(String, no el símbolo solicitado).
Pero en rake se puede definir el espacio de nombres con el símbolo o cadena, también se puede definir así:
namespace 'baseline' do |namespace|
scope = namespace.scope.path
#...
end
El alcance será el mismo con ambas definiciones.
Si realmente necesita el símbolo, puede usar scope.to_sym
.
Puede usar esto para obtener acceso al 'scope', que será una matriz de los espacios de nombres en los que está anidada esta tarea:' namespace.instance_variable_get ("@ scope") ' –
Cool, agregado a la respuesta – Nerian
Ahh, buenos viejos feos hacks ;-) – Reactormonk