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
-
しかし、私はこの取得:
を(必要なモジュールの名前でString
を返す
get_module_name_from_config_file
その方法と仮定すると、ここに
"M1"
か
"M2"
のいずれか。)
error: wrong argument type String (expected Module).
m
はString
であり、ではないためです、明らかに。私もm
をシンボルとして使用しようとしましたが、同じ問題が発生します(エラーメッセージのString
をSymbol
に置き換えてください)。
m
をタイプModule
に変換できますか?それとも私はこれを達成する別の方法がありますか?
ありがとうございます。
const_getでこのようなことはできますか? http://stackoverflow.com/questions/2361347/how-to-convert-a-string-to-a-constant-in-ruby – jstim