所以这可能有点令人困惑,但请耐心等待。简而言之,我想遍历具有特定键值的所有属性,然后在值不为空的情况下将它们插入模板。这是我的代码:
属性:
# === 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
我的红宝石并不是最好的,因为我只是从所有这些东西开始,但是我找不到这种情况的任何例子。任何帮助将是巨大的,谢谢。
您可能的意思是:
<% node['elasticsearch']['default'].each do |key, value| -%> <% unless value.empty? -%> <%= key %>=<%= value %> <% end %> <% end %>
遍历a时Hash,将遍历其键值对。因此对于第一次迭代,key将是'ES_USER',并且value将是''(不是nil…)。
Hash
key
'ES_USER'
value
''
nil
接下来,检查该值是否不是blank?,然后打印出该key=value行。
blank?
key=value