namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
Làm cách nào để nhận được biểu tượng :baseline
trong ngữ cảnh này?Làm thế nào để có được không gian tên hiện tại trong Rake?
namespace :baseline do
INDEX_DIR = index(:baseline) # context
task(:foo) ...
end
Làm cách nào để nhận được biểu tượng :baseline
trong ngữ cảnh này?Làm thế nào để có được không gian tên hiện tại trong Rake?
namespace :baseline do |namespace|
scope = namespace.instance_variable_get("@scope")
INDEX_DIR = index(scope)
task(:foo) ...
end
Có một cách sạch hơn bây giờ:
namespace :baseline do
scope = Rake.application.current_scope
puts scope.path
end
tôi cần này để xác định nhiệm vụ năng động, vì vậy không cần phải vượt qua không gian tên cho khối là một lợi thế lớn.
Ngoài Dmitris answer với Rake.application.current_scope
:
namespace :baseline do |namespace|
scope = namespace.scope.path
#...
end
scope
sẽ "baseline"
(String, không phải là yêu cầu Symbol).
Nhưng trong cái cào bạn có thể xác định không gian tên với biểu tượng hoặc chuỗi, bạn cũng có thể định nghĩa như thế này:
namespace 'baseline' do |namespace|
scope = namespace.scope.path
#...
end
Phạm vi sẽ giống nhau với cả hai định nghĩa.
Nếu bạn thực sự cần Biểu tượng, bạn có thể sử dụng scope.to_sym
.
Sau đó, bạn có thể sử dụng quyền này để truy cập vào 'phạm vi', sẽ là một mảng các không gian tên mà nhiệm vụ này được lồng vào bên trong:' namespace.instance_variable_get ("@ scope") ' –
Cool, được thêm vào câu trả lời – Nerian
Ahh, hacks cũ xấu xí tốt ;-) – Reactormonk