Ruby オブジェクトをモジュールで拡張したいのですが、実行時に使用するモジュールを変更し、オブジェクトごとに変更できるようにしたいと考えています。つまり、モジュールの名前をパラメーターとして渡したいのですextend
。これどうやってするの?
私は次のことを試しました:
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
(メソッドが目的のモジュールの名前でget_module_name_from_config_file
a を返すと仮定します - ここでは または のいずれかです。)String
"M1"
"M2"
しかし、私はこれを取得します:
error: wrong argument type String (expected Module).
m
型の為String
、無いModule
、明らかに。m
シンボルでも試してみましたが、同じ問題が発生します(エラーメッセージで置き換えString
てください)。Symbol
m
それで、タイプの何かに変換できModule
ますか?または、これを達成できる別の方法はありますか?
前もって感謝します。