0

谁能告诉我初始化配置变量并在 gems 中读取该变量的最佳实践?

已尝试以下步骤:此代码是用 gem 编写的

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

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

提前致谢,

贾格迪什

4

2 回答 2

1

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

额外的好处是,这与 Heroku 做事的方式也可以转换为 1 到 1。

于 2013-09-19T06:42:10.640 回答
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

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

配置/初始化程序/your_initializer.rb

YourGem::YourClass.configure_with(path_to_the_yml_config_file)

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

于 2013-09-19T06:51:50.817 回答