1

我今天刚开始和厨师一起玩,我无法理解的一件事是我如何使用数据包将多个键值存储在一个项目中(1 个包 > 1 个项目 > 多个键值)并且能够在配方中一一调用它们。

如果数据包中的目录存在,这是一个删除目录的简单测试。

directory 'bag_item[installvar.testbag]['testdir'])' do
  action :delete
  only_if { Dir.exist?(bag_item[installvar.testbag]['testdir']) }
end

显然,我没有正确使用索引,但我根本不擅长红宝石,直到几周前我才知道红宝石是什么......所有的谷歌搜索都指向我在多个项目上大量使用的例子一个键值,这不是我想要实现的。databag 是 installvar itemID 是 testbag,我要检索的键是 testdir。

4

2 回答 2

0

查看https://docs.chef.io/ruby.html了解一些非常基本的 Ruby 介绍。具体看 Hash 部分,因为data_bag_item()方法调用返回的项目在大多数情况下都像 Hash 一样。每个包项本质上都是一个与 JSON 兼容的散列。

于 2016-04-20T22:35:41.493 回答
0

所以解决方案很简单:

var = data_bag_item('installvar', 'testbag')
  dir = var['testdir']

directory "#{dir}" do
  action :delete
  only_if  Dir.exist?("#{['dir']}")
end

这行得通。

于 2016-04-21T16:35:36.747 回答