【问题标题】:What's a good approach for loading a YAML config in Ruby but setting default values?在 Ruby 中加载 YAML 配置但设置默认值的好方法是什么?
【发布时间】:2016-06-04 23:54:11
【问题描述】:

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

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

所以我加载它们:

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

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

【问题讨论】:

  • 如果未设置您期望的属性,则将加载配置文件的文件设置为默认值

标签: ruby-on-rails ruby yaml


【解决方案1】:

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

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

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

【讨论】:

  • 不错,简洁的解决方案。
【解决方案2】:

由于 app_config 在您加载 YAML 配置时只是一个 Hash,因此您可以使用类似 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 默认值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-10-05
    • 1970-01-01
    • 2019-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-02
    相关资源
    最近更新 更多