谁能告诉我初始化配置变量并在 gems 中读取该变量的最佳实践?
已尝试以下步骤:此代码是用 gem 编写的
config = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
@key = config["config"]["key"]
server = config["config"]["server"]
并在 rails 应用程序的 config/config.yml 中创建了 yml 文件。
提前致谢,
贾格迪什
谁能告诉我初始化配置变量并在 gems 中读取该变量的最佳实践?
已尝试以下步骤:此代码是用 gem 编写的
config = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
@key = config["config"]["key"]
server = config["config"]["server"]
并在 rails 应用程序的 config/config.yml 中创建了 yml 文件。
提前致谢,
贾格迪什
我发现我最喜欢在 rails 中设置配置变量的方法是使用figaro gem。Figaro 基本上使用了在ENV['x']
整个 rails 中可用的方法。它将所有配置变量存储在一个通用的 application.yml 文件中,并使所有常量都可以通过 ENV 变量访问。
额外的好处是,这与 Heroku 做事的方式也可以转换为 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
在您需要 gem 的 Rails 应用程序中,您可以添加一个初始化程序并进行如下配置:
配置/初始化程序/your_initializer.rb
YourGem::YourClass.configure_with(path_to_the_yml_config_file)
该解决方案提供了默认配置,并且可以添加自己的 yaml 文件来更改默认值。