在厨师红宝石中使用全局变量

时间:2017-12-06 17:42:54

标签: ruby chef

是否有可能在厨师食谱中将某个变量定义为全局。就像我宣布&更改Chef资源中的var,之后我想在配方代码中使用此更改的值。

version=""
ruby 'extract_module' do
    #cwd ::File.dirname(C:\\chef\\cache)
    code <<-EOH
        require 'win32/registry'
        Win32::Registry::HKEY_LOCAL_MACHINE.open(
        'Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall') do |reg|
            reg.each_key do |key|
                k = reg.open(key)
                app = k["DisplayName"] rescue nil

                if app == "Qlik Sense 3.2"
                    version = k["DisplayVersion"] rescue nil
                    puts version
                end
            end
        end
    EOH
end

puts "#{version}"

此变量不在ruby资源之外打印。我们可以做一些类似python的事情,使用全局关键字&amp;修改值。这里有类似的吗?

1 个答案:

答案 0 :(得分:0)

ruby资源不在同一进程中运行,它作为子进程运行ruby -E。你想要的是ruby_block资源,它是无关的。