私は次のように一度それをしました:
module YourGem
class YourClass
@config = { :username => "foo", :password => "bar" } # or @config = SomeHelperClass.default_config if the config is more complex
@valid_config_keys = @config.keys
# Configure through hash
def self.configure(opts = {})
opts.each { |k,v| @config[k.to_sym] = v if @valid_config_keys.include? k.to_sym }
end
# Configure through yaml file
def self.configure_with(path_to_yaml_file)
begin
config = YAML::load(IO.read(path_to_yaml_file))
rescue => e
raise "YAML configuration file couldn't be found: #{e}"
end
configure(config)
end
end
end
また、gem が必要な Rails アプリケーションでは、初期化子を追加して、次のように構成できます。
config/initializers/your_initializer.rb
YourGem::YourClass.configure_with(path_to_the_yml_config_file)
このソリューションは、デフォルトの構成を提供し、独自の yaml ファイルを追加してデフォルト値を変更する可能性を提供します。