-1

不确定我将如何使用该数组在 Chef 中创建 Sales 文件夹的多个子文件夹。

sales = 'Sales'
salesfolders = %w{'NewClients', 'MarketingMaterial', 'SalesTools', 'ClientInformation'}


directory "#{directory}\\#{salesfolders}"
  owner 'root'
  group 'root'
  mode '0755'
  recursive true
  action :create
end '

}

4

1 回答 1

5

好的——有几件事要看。首先,salesfolders当前不是一个有效的数组。您需要像这样定义它:

salesfolders = ['foo', 'bar']

或像这样:

salesfolders = %w(foo bar)

后一种语法是字符串数组的简写——它与第一个示例相同,但语法糖更少。

一旦你得到了一个格式良好的数组,你需要遍历那个数组并为其中的每个项目运行一些代码。在 Ruby 中,这是通过调用.each数组来实现的,如下所示:

salesfolders.each do |salesfolder|
  # do something with salesfolder
end

请注意,那里salesfolder设置了一个变量,对于数组的每个项目,该变量都是不同的——如果我们查看前面的示例,该代码块第一次运行时将是foo,第二次运行bar,依此类推。

考虑到这一点,如果我们想为每个销售文件夹运行您的 Chef 代码,我们可以执行以下操作:

salesfolders.each do |salesfolder|
  directory "/something/else/here/#{salesfolder}" do
    owner 'root'
    group 'root'
    mode '0755'
    recursive true
    action :create
  end
end

对于我们数组中的每个销售文件夹,我们将运行该directory块并创建一个新目录。

于 2017-07-31T17:10:00.147 回答