繁体   English   中英

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

[英]Using global variables in chef ruby

是否有可能在厨师食谱中将某些变量定义为全局变量。就像我在厨师资源中声明和更改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的事情,用global关键字声明并修改值。 这里有相似之处吗?

ruby资源不在同一进程中运行,而是将ruby -E作为子进程运行。 您需要的是一个不相关的ruby_block资源。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM