【问题标题】:Ruby YAML arrayRuby YAML 数组
【发布时间】:2017-10-20 08:17:43
【问题描述】:

我正在使用来自 elasticsearch 的以下资源:

elasticsearch_configure 'elasticsearch' do
    configuration ({
        'path.repo' => ["/backups/s3_currently_dev", "/backups/s3_currently", "/backups/s3_daily", "/backups/s3_weekly", "/backups/s3_monthly"]
    })
end

我需要以下输出:

path.repo: ["/backups/s3_currently_dev", "/backups/s3_currently", "/backups/s3_daily", "/backups/s3_weekly", "/backups/s3_monthly"]

但我得到以下一个:

path.repo:
- "/backups/s3_currently_dev"
- "/backups/s3_currently"
- "/backups/s3_daily"
- "/backups/s3_weekly"
- "/backups/s3_monthly"

这似乎不起作用。如何获得所需的输出?

转载:

1- Install Chef.
2- Create a cookbook.
3- Use elasticsearch community cookbook to install elasticsearch and configure with the resource shown.
4- Use kitchen or vagrant to create.

【问题讨论】:

  • 你是说调用 path.repo 会给你一个类似 YAML 的结果吗?也许尝试编写步骤来重现。
  • 是的。如何将 YAML 结果更改为我想要的输出?我已经编辑了重现的步骤。
  • 如果你这样做path.repo.class会得到什么?
  • path.repo 不是一个类,它只是一个字符串声明。
  • Ruby 中的一切都是对象。 Object#class 告诉你对象的类是什么。 path.repo.class 也是如此,然后告诉我它在说什么。

标签: arrays ruby yaml


【解决方案1】:

您可以像这样使用YAML.load 解析现有输出:

require 'yaml'
=> true

config = 'path.repo:
 - "/backups/s3_currently_dev"
 - "/backups/s3_currently"
 - "/backups/s3_daily"
 - "/backups/s3_weekly"
 - "/backups/s3_monthly"'
=> "path.repo:\n- \"/backups/s3_currently_dev\"\n- \"/backups/s3_currently\"\n- \"/backups/s3_daily\"\n- \"/backups/s3_weekly\"\n- \"/backups/s3_monthly\""

doc = YAML.load config
=> {"path.repo"=>["/backups/s3_currently_dev", "/backups/s3_currently", "/backups/s3_daily", "/backups/s3_weekly", "/backups/s3_monthly"]}

doc["path.repo"]
=> ["/backups/s3_currently_dev", "/backups/s3_currently", "/backups/s3_daily", "/backups/s3_weekly", "/backups/s3_monthly"]

【讨论】:

    猜你喜欢
    • 2016-01-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-30
    • 1970-01-01
    相关资源
    最近更新 更多