在gem中管理set配置变量的最佳方法?

时间:2013-09-19 06:33:36

标签: ruby-on-rails ruby rubygems gem

任何人都可以告诉我初始化配置变量并在gem中读取变量的最佳实践吗?

尝试过以下步骤:  这段代码是用gem编写的

config = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
 @key = config["config"]["key"]
 server = config["config"]["server"]

并在rails应用程序中的config / config.yml中创建了yml文件。

提前致谢,

杰格迪什

2 个答案:

答案 0 :(得分:1)

我发现我最喜欢在rails中设置配置变量的方法是使用figaro gem。 Figaro基本上使用了整个rails中可用的ENV['x']方法。它将所有配置变量存储在一个公共application.yml文件中,并通过ENV变量访问所有常量。

奖励是,这可以通过Heroku的方式将1翻译为1。

答案 1 :(得分:1)

我曾经做过以下一次:

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

在你的Rails应用程序中,你需要你的gem,你可以添加一个初始化程序并配置如下:

配置/初始化/ your_initializer.rb

YourGem::YourClass.configure_with(path_to_the_yml_config_file)

此解决方案提供默认配置,并可添加自己的yaml文件以更改默认值。