【问题标题】:chef ruby syntax error while converting hash to yaml将哈希转换为 yaml 时出现厨师 ruby​​ 语法错误
【发布时间】:2017-05-23 12:20:11
【问题描述】:

我在我的环境中使用 mongodb3 食谱(从厨师超市购买)。当我们传递像 [10.10.0.10,127.0.0.1] 这样的 mongos 模板的输入时,输出文件的创建语法不正确:

PFB out put - 

net:
port: 27017
bindIp: ! '[10.10.0.10,127.0.0.1]'

方括号周围有一个!'',而不仅仅是[10.10.0.10,127.0.0.1]

我正在使用下面的函数进行转换。

module Mongodb3Helper
  def mongodb_config(config)
    config.to_hash.compact.to_yaml
  end
end

class Hash
  def compact
    inject({}) do |new_hash, (k, v)|
      if v.is_a?(Hash)
        v = v.compact
        new_hash[k] = v unless v.empty?
      else
        new_hash[k] = v unless v.nil?
      end
      new_hash
    end
  end
end

【问题讨论】:

  • 显示您的厨师食谱,但您在此处执行的操作有问题。引用 mongo documetnation:“要绑定到多个 IP 地址,请输入逗号分隔值的列表。”因此,只需将属性设置为 IP 以逗号分隔的字符串而不是数组,就可以了。
  • 我正在传递这样的输入 '[10.10.10.10'+',127.0.0.1]' 这是正确的吗?
  • 不,只需传递"10.10.0.10,127.0.0.1" 一个简单的字符串,IP 用逗号分隔...
  • 好的...但我需要像这样 [10.10.10.10,127.0.0.1] 不带引号
  • 为什么需要方括号?这不是 mongodb 3.4 文档所说的。但如果你真的想要,只需将它们添加到字符串中而不是外部:"[10.10.0.10,127.0.0.1]"

标签: ruby-on-rails-3 chef-infra yaml chef-recipe


【解决方案1】:

您的代码虽然由于对全局对象进行了更改而非常难以维护,但很好。正如 cmets 中多次指出的那样,问题在于您输入该代码的数据。

【讨论】:

    猜你喜欢
    • 2013-07-08
    • 2013-01-22
    • 1970-01-01
    • 2018-06-23
    • 2014-04-30
    • 2013-11-28
    • 2018-10-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多