任何人都可以告诉我初始化配置变量并在gem中读取变量的最佳实践吗?
尝试过以下步骤: 这段代码是用gem编写的
config = YAML.load_file("#{RAILS_ROOT}/config/config.yml")
@key = config["config"]["key"]
server = config["config"]["server"]
并在rails应用程序中的config / config.yml中创建了yml文件。
提前致谢,
杰格迪什
答案 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文件以更改默认值。