Tôi có một mô-đun MyModule
. Tôi tự động tải các lớp học vào nó. Làm thế nào tôi có thể nhận được một danh sách các lớp được định nghĩa trong không gian tên của nó?Tìm các lớp học có sẵn trong Học phần
Ví dụ:
def load_plugins
Dir.glob(File.dirname(__FILE__) + '/plugins/*.rb') do |f|
MyModule.class_eval File.read(f)
end
# now how can I find the new classes I've loaded into MyModule?
end
tôi nên nói rằng mỗi f
chứa một cái gì đó giống như "class Foo; kết thúc".
Bạn cũng có thể nghĩ về nó như thế này: trong Rails, làm thế nào tôi có thể lập trình tìm tất cả các lớp được xác định trong mô-đun ActiveRecord?
Tuyệt vời. Cảm ơn. – joshuaxls
Một điều: tại sao bạn sử dụng thử nghiệm đó thay vì "MyModule.const_get (c) .is_a? Class"? Tôi không quen với việc sử dụng "===" như thế. – joshuaxls
Không có lý do thuyết phục. Phiên bản === chỉ dễ đọc hơn cho tôi. Sử dụng is_a? cũng sẽ hoạt động tốt. – Chuck