在Ruby中加载YAML配置但设置默认值的好方法是什么?

时间:2016-06-04 23:54:12

标签: ruby-on-rails ruby yaml

我将从YAML文件中加载一些应用配置:

# YAML config file
app_name: "Example"
app_path: ~/path/to/app

所以我加载它们:

app_config = YAML::load_file("config.yml")

如果缺少某些键/值,那么设置默认值的干净方法是什么?

2 个答案:

答案 0 :(得分:2)

您应该准备一个默认哈希,然后通过合并哈希值来覆盖配置中的值。

default_app_config = {
  "app_name" => "Default name",
  "app_path" => "default/path",
  ...,
}

app_config = default_app_config.merge(YAML.load_config("config.yml"))

答案 1 :(得分:1)

由于app_config只是你加载YAML配置时的Hash,你可以使用类似哈希的测试,如下所示:

name = app_config['name'] || 'default'

如果您要进行非常这些检查的最小数量,这非常有用,特别是当它们位于您加载YAML配置的点附近时。

但是,您可以使用默认值更新配置哈希,如下所示:

app_config['name'] ||= 'default'

这样,您就不必一直检查代码中是否存在密钥。

在加载YAML时,这样的事情可能会起作用:

app_config = YAML::load_file("config.yml")

# Set default values
app_config['app_name'] ||= "Example"
app_config['app_path'] ||= "~/path/to/app"

通过应用默认值,这将使代码的其余部分变得简单和简单。这些是YAML配置文件的DRY默认值。

相关问题