好的——有几件事要看。首先,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
块并创建一个新目录。