加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – Puppet:嵌套的hash / dict,数组:如何在erb中访问?

发布时间:2020-12-17 01:33:11 所属栏目:百科 来源:网络整理
导读:玩木偶,我最终在一个嵌套字典/哈希 – 看起来或多或少像 $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","por
玩木偶,我最终在一个嵌套字典/哈希 – 看起来或多或少像

$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”,

但是,当我试图进入顶部字典中的数组“选项”或字典“机器”时,puppet会抛出编译错误.

我现在的猜测是,数组和dicts /哈希在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访问它.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读