在Ruby App中使用YAML数据

时间:2016-03-04 09:15:13

标签: ruby yaml

我想从我的YAML文件加载数据并在我的ruby应用程序中使用它。 YAML中提供的内容将用于不同的地方。因此,我想先阅读它,并在需要时使用数据。

我想知道最佳做法是什么?

我尝试的是

config.yaml

db:
 username: admin
 password: admin

config.rb

class Config
 class << self
    attr_accessor :uname, :pwd
    def load
       config_data = YAML.load_file("c:\config.yml")
       @uname = config_data['db']['username']
       @pwd = config_data['db']['password']
    end
 end
end

my_app.rb

Config.load
puts Config.uname
puts Config.pwd

请告诉我这是否是加载和使用YAML数据的正确方法。如果没有,请分享最佳实践。

1 个答案:

答案 0 :(得分:0)

这几乎不取决于你的意图,但总的来说,是的,它主要是 正确的方法。你想做的更多,是缓存一次读取数据:

class Config
 class << self
    attr_accessor :uname, :pwd
    def load force_reload = false
       return @config_data if @config_data && !force_reload

       @config_data = YAML.load_file("c:\config.yml")
       @uname = @config_data['db']['username']
       @pwd = @config_data['db']['password']
    end
 end
end

如果@config已加载,我们会立即返回,允许快速后续调用Config.config

是否要显式重新加载配置,它应该将参数传递给load:

Config.load true # true means reload YAML explicitly