- 公開日
Ruby Gem Configuration Pattern
railsのgemでよくみかける初期設定ファイル、config/initializers/foo.rb
。このような初期設定のインターフェースをgem内に作る場合、いったいどうしたら良いでしょうか。
めざす完成形はコレ!
完成系として、下記を想定してみます。
configureメソッドを用意
まずはmodule
とconfigure
というクラスメソッドを用意します。
Configurationクラス
次に実際の設定値が入るConfiguration
クラスを用意します。
完成形
次にこれを組み合わせてみましょう。
これでインスタンス化されたConfiguration
クラスが出てきます。
> Konfig.configure {|config| p config}
#<Konfig::Configuration:0x007ff5dfba4a50 @my_value="default value">
configure
でConfiguration
インスタンス作っててブロック内のconfig
変数でConfiguration
インスタンスに設定注入していくようなイメージですね。