【发布时间】:2018-12-07 05:30:22
【问题描述】:
我正在尝试使用 YAML.dump(obj) 将 ruby 哈希对象转换为 YAML 格式,但即使在使用转储选项后,我也出现了不正确的缩进。
我有以下可执行的 ruby 脚本:
#!/usr/bin/ruby
require "yaml"
require "erb"
context_path = ARGV[0]
context = YAML.load_file(context_path)['context']
def get_yaml(obj)
YAML.dump( obj['imports']['external_repositories']['credentials'] ).sub(/.*?\n/,'')
end
-obj['imports']['external_repositories']['credentials'] 的值为
{"iacbox"=>{"basic"=>{"name"=>"", "password"=>""}}, "nexus"=>{"basic"=>{"name"=>"cpreader", "password"=>"swordfish"}}}
注意:我使用 sub 方法在输出开头删除“---”
ERB 模板将上述 get_yaml 方法调用为:
credentials:
<%= get_yaml( context ) %>
即将到来的输出是:
credentials:
iacbox:
basic:
name: ''
password: ''
nexus:
basic:
name: cpreader
password: swordfish
虽然我期望输出为:
credentials:
iacbox:
basic:
name: ''
password: ''
nexus:
basic:
name: cpreader
password: swordfish
如何从转储中获得预期的输出?
【问题讨论】:
-
欢迎来到Stack Overflow。问一个问题时,让它直接和关于编程。询问某人是否可以帮助您通常可以回答是或否(这是关于某人能力的问题,而不是关于编程的问题)。一个好的开始方式是“我如何...”您还应该让您的问题更简单
obj['imports']['external_repositories']['credentials']是您最初遇到问题的详细信息,但不会让您的问题更清楚。将问题简化为最小案例以重现它,通常有助于发现问题,而且它肯定会让其他人更容易
标签: ruby-on-rails yaml erb