{ "ip" => "0.0.0.0", "port-6ren">
gpt4 book ai didi

ruby - Puppet:嵌套哈希/字典,数组:如何在 erb 中访问?

转载 作者:数据小太阳 更新时间:2023-10-29 07:48:00 26 4
gpt4 key购买 nike

玩 puppet ,我最终进入了一个嵌套的字典/哈希 - 看起来或多或少像

$settings =
{
"var1" =>
{
"ip" => "0.0.0.0",
"port" => "1234",
"option" => ["foo", "bar"],
"machines" =>
{
"maschine-1" => { "ip" => "1.2.3.4", "port" => "1234"},
"maschine-2" => { "ip" => "1.2.3.5", "port" => "1235"},
}
}
}

但是,我还没有设法在相应的 erb 模板中正确解析它。

<% @settings.each_pair do |settings_key, settings_value_hash| %>
<%= settings_value_hash['ip']%>:<%= settings_value_hash['port'] %>

option <% @settings_value_hash['option'].each do |option| -%> <%= option %> <% end -%>

<% @{settings_value_hash['machines']}.each_pair do |machine_key, machine_value_hash| %>
server <%= machine_key %> <%= machine_value_hash['ip'] %>:<%= machine_value_hash['port'] %>
<% end %>

因此,我可以毫无问题地获取顶级字典中的值,即“ip”和“port”,

但是,当我尝试访问数组“option”或顶部字典中的字典“machines”时,puppet 会抛出编译错误。

目前我的猜测是,数组和字典/散列在 Ruby/Puppet 中不是“可散列的”,或者?

干杯并感谢您的想法, 托马斯

最佳答案

不确定您在做什么,但有一些明显的问题,例如 @settings_value_hash 未定义,它将是 settings_value_hash 管道变量而不是实例变量。 @{settings_value_hash['machines']} 也是正确的,如果你运行它会发生什么

<% @settings.each do |settings_key, settings_value_hash| %>
<%= "#{settings_value_hash['ip']}:#{settings_value_hash['port']}" %>
option
<% settings_value_hash['option'].each do |option| %>
<%= option %>
<% end %>
<% settings_value_hash['machines'].each do |machine_key, machine_value_hash| %>
server <%= "#{machine_key} #{machine_value_hash['ip']}:#{machine_value_hash['port']}" %>
<% end %>
<% end %>

另外,为什么您的初始哈希设置为全局 $settings 但您通过实例变量 @settings 访问它。

关于ruby - Puppet:嵌套哈希/字典,数组:如何在 erb 中访问?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23138255/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com