Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/cmake/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Chef infra 如何在配方中运行ruby块并将结果传递给模板_Chef Infra_Chef Recipe - Fatal编程技术网

Chef infra 如何在配方中运行ruby块并将结果传递给模板

Chef infra 如何在配方中运行ruby块并将结果传递给模板,chef-infra,chef-recipe,Chef Infra,Chef Recipe,前几天你们都用一些ruby代码帮助我解析字符串并修改它()。现在,诀窍是如何将其插入厨师食谱,以便填充到模板中 ruby块提供了我需要的结果,至少当我在独立ruby中测试时是这样。从在线搜索来看,似乎有一种方法可以做到这一点,那就是使用run_state[]。不幸的是,它没有填充到模板中 基本上,在配方中,我有以下代码块: ruby_block "new db home" do block do if node['oracledb']['oraclehome']['db']['hom

前几天你们都用一些ruby代码帮助我解析字符串并修改它()。现在,诀窍是如何将其插入厨师食谱,以便填充到模板中

ruby块提供了我需要的结果,至少当我在独立ruby中测试时是这样。从在线搜索来看,似乎有一种方法可以做到这一点,那就是使用run_state[]。不幸的是,它没有填充到模板中

基本上,在配方中,我有以下代码块:

ruby_block "new db home" do
  block do
    if node['oracledb']['oraclehome']['db']['home'].split('/')[-1].include?('dbhome_')
      db_home = node['oracledb']['oraclehome']['db']['home']
      digits = db_home[/\d+$/]
      db_home[/\d+$/] = digits.to_i.next.to_s if digits
    else
      db_home = db_home + "/dbhome_1"
    end
    node.run_state['new_db_home'] = db_home
  end
  not_if { node['oracledb']['oraclehome']['db']['version'] == '11.2.0.4' }
end
然后在模板中,我尝试将其引用为:

db_home=<% node.run_state['new_db_home'] %>
db_主页=

谢谢,@Mr.,但为了确保我理解。。。您是否建议我替换
节点。使用
节点运行\u状态['new\u db\u home']=db\u home
。默认值[:new\u db\u home]=db\u home
?如果是这样,我如何在模板中引用它
db_home=
?正确。只需确保只有在写入节点属性之后才读取节点属性。