ruby - Chef Ruby 遍历 .erb 模板文件中的属性

标签 ruby elasticsearch chef-infra cookbook chef-template

所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后如果值不为空,则将它们插入到模板中。这是我的代码:

属性:

# === Default file Configurations
#
default['elasticsearch']['default']['ES_USER']              = ''
default['elasticsearch']['default']['ES_GROUP']             = ''
default['elasticsearch']['default']['ES_HEAP_SIZE']         = ''
default['elasticsearch']['default']['MAX_OPEN_FILES']       = ''
default['elasticsearch']['default']['MAX_LOCKED_MEMORY']    = 'unlimited'
default['elasticsearch']['default']['MAX_MAP_COUNT']        = ''
default['elasticsearch']['default']['LOG_DIR']              = '/var/log/elasticsearch'
default['elasticsearch']['default']['DATA_DIR']             = '/var/lib/elasticsearch'
default['elasticsearch']['default']['WORK_DIR']             = '/tmp/elasticsearch'
default['elasticsearch']['default']['CONF_DIR']             = '/etc/elasticsearch'
default['elasticsearch']['default']['CONF_FILE']            = '/etc/elasticsearch/elasticsearch.yml'
default['elasticsearch']['default']['RESTART_ON_UPGRADE']   = ''

模板:

<% node['elasticsearch']['default'].each do |host| -%>
    <% if node.elasticsearch.default.host not nil -%>
        <%= host %>=<%= node.elasticsearch.default.host %>
<% end %>

输出(希望如此):

MAX_LOCKED_MEMORY=unlimited
LOG_DIR=/var/log/elasticsearch
DATA_DIR=/var/lib/elasticsearch
WORK_DIR=/tmp/elasticsearch
CONF_DIR=/etc/elasticsearch
CONF_FILE=/etc/elasticsearch/elasticsearch.yml

我的 ruby​​ 不是最好的,因为我才刚刚开始使用所有这些东西,但我找不到此类情况的任何示例。任何帮助都会很棒,谢谢。

最佳答案

你的意思可能是:

<% node['elasticsearch']['default'].each do |key, value| -%>
    <% unless value.empty? -%>
        <%= key %>=<%= value %>
    <% end %>
<% end %>

当遍历Hash 时,您会遍历它的键值对。因此对于第一次迭代,key 将是 'ES_USER',而 value 将是 ''(这是不是 nil...)。

接下来检查该值是否不是 blank? , 并打印出 key=value 行。

关于ruby - Chef Ruby 遍历 .erb 模板文件中的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22235295/

相关文章:

css - Ruby on Rails 教程自定义 CSS 未显示在应用程序中

ruby - 无法在 Ubuntu 中成功安装带有 Ruby 支持的 Vim

ruby-on-rails - 我收到错误 'Unknown key for a VALUE_STRING in [q]'

python - 将嵌套 JSON 的 "dict"值向上拉一层

ssl - Chef-server 可以与通配符证书一起使用吗?

ruby-on-rails - 关于这个 Rails 关联案例中的 "<<"运算符

ruby-on-rails - 为什么这行代码会引发语法错误?

elasticsearch - Kibana 返回 "Connection Failed"

elasticsearch - ElasticSearch:如何设置到模板的默认映射

ruby - Chef - 提供者内的模板找不到源