Bir Ruby nesnesini bir modülle genişletmek istiyorum ancak çalışma zamanında kullanmak için hangi modülün değiştirilebileceğini ve bunu nesne ile değiştirebilme yeteneğine sahip olmak istiyorum. Başka bir deyişle, modülün ismini bir parametre olarak extend
'a aktarmak istiyorum. Bunu nasıl yapabilirim?Ruby'de bir nesneyi, bir parametrede adı verilen bir modülle nasıl genişletebilirim?
Ama bu olsun
module M1
end
module M2
end
class C
def initialize module_to_use
extend module_to_use
end
end
m = get_module_name_from_config_file
c1 = C.new m
(. Burada
"M1"
veya
"M2"
ya istenen modülünün adını taşıyan bir
String
döndüren
get_module_name_from_config_file
yöntem olduğunu varsayarsak):
Aşağıdaki çalıştı
error: wrong argument type String (expected Module).
, m
String
türünde değil,'dir, açıkçası. Ben de bir sembolü olan m
ile denedim, ancak aynı sorunu alıyorum (String
hata iletisinde Symbol
ile değiştirin).
m
'u Module
türünde bir şeye dönüştürebilir miyim? Ya da bunu başarabileceğim başka bir yol var mı?
Şimdiden teşekkürler.
Böyle bir şey const_get ile çalışır mı? http://stackoverflow.com/questions/2361347/how-to-convert-a-string-to-a-constant-in-ruby – jstim