用切片! on变量正在修改填充变量

时间:2017-08-11 19:14:10

标签: ruby chef chef-recipe aws-opsworks

在OpsWorks Stacks中,我使用自定义JSON字段设置了图层属性:

{
  "layer_apps" : [
    "app_manager"
  ]
}

属性的app_部分是工作流程所必需的。有时,我需要暂时删除食谱中的app_部分。为此,我使用slice!

node['layer_apps'].each do |app_name|

  install_certs_app_name = app_name
  install_certs_app_name.slice!('app_') # 'app_manager' => 'manager'
  # snip
end

但是,一旦完成此操作,即使app_name未被直接修改,每个node['layer_apps']属性也会被切片,这将继续进行后续烹饪并导致失败。我预期的行为是slice!会修改app_name,而不是当前的node['layer_apps']属性。认为app_name是属性的链接而不是它自己的变量,我尝试将其值分配给单独的变量(install_certs_app_name,并在其他食谱中类似),但行为仍然存在

这是Ruby / Chef中的预期行为吗?有没有更好的方法从属性中排除app_前缀?

0 个答案:

没有答案