2011-12-06 28 views

Trả lời

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

    INDEX_DIR = index(scope) 

    task(:foo) ... 
end 
+3

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") ' –

+0

Cool, được thêm vào câu trả lời – Nerian

+2

Ahh, hacks cũ xấu xí tốt ;-) – Reactormonk

4

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.

1

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.

Các vấn đề liên quan