私が欲しいのは、初期化子を介して渡されたパラメーターに基づいて、メソッドを委任するクラスを決定する単一の API です。以下に基本的な例を示します。
module MyApp
class Uploader
def initialize(id)
# stuck here
# extend, etc. "include Uploader#{id}"
end
end
end
# elsewhere
module MyApp
class UploaderGoogle
def upload(file)
# provider-specific uploader
end
end
end
私の望む結果:
MyApp::Uploader('Google').upload(file)
# calls MyApp::UploaderGoogle.upload method
上記はデモンストレーションのみを目的としていることに注意してください。アップローダ ID を持つ属性を含むオブジェクトを実際に渡します。これを処理するより良い方法はありますか?