ほとんどの場合、問題に対して正しいアプローチをとっていません。
同じ API で多くの異なるモジュールを定義し、必要なモジュールを動的に使用できるのに、なぜ同じモジュールを異なる方法で定義するのでしょうか?
モジュールで何をしていますか?
ミックスインとして使用していますか?
if condition
object.extend Module1
else
object.extend Module2
end
object.method(bla,blabla)
そのメソッドを静的メソッドとして呼び出しているだけですか?
module = if condition
Module1
else
Module2
end
module.method(bla, bla bla)
定数を使用する代わりに、静的メソッドまたは「定数」の値でハッシュを返す静的メソッドを使用する必要があります。定数はあまり実用的ではありません。
ロジックではなくモジュールを使用してデータを保存する場合は、代わりにクラスを使用する必要があります。
class Options
attr_reader :constant_1,:constant_2
end
class Options1 < Options
def initialize
@constant_1="value1"
@constant_2="value2"
end
end
class Options2 < Options
def initialize
@constant_1="value3"
@constant_2="value4"
end
end
options= condition ? Options1.new : Options2.new
options.constant_1 # => intended value