我是Ruby和Chef的新手,我正在尝试编写一本菜单来重新启用启用了ACL的根文件系统。 Ohai正在使用所有挂载的文件系统填充node['filesystem']
。如何专门找到node['filesystem']
node['filesystem'][:item]['mount'] == '/'
下的所有项目?
答案 0 :(得分:1)
您可以使用Hash#select
方法:
filtered_nodes = node['filesystem'].select do |key, value|
key == :item && value['mount'] == '/'
end
答案 1 :(得分:0)
root_filesystems = node['filesystem'].select do |k, v|
node['filesystem'][k]['mount'] == '/'
end
答案 2 :(得分:0)
更新我刚刚意识到自己的想法。 :item
不是哈希键,而是您要枚举的键的占位符。
这将为您做到这一点
selection = node['filesystem'].keys.find_all do |item|
node['filesystem'][item]['mount'] == '/'
end
你的问题不清楚,但我认为node
可能是文件系统的散列。
这将选择node
的所有键,其元素[:item] ['mount']等于/
。
selection = node.keys.find_all do |key|
val = node[key]
val.key? :item and val[:item]['mount'] == '/'
end