ruby – 如何在执行时读取文件内容?厨师在编译时读取

因为我遇到了我向Mixlib团队报告的这个 MIXLIB-11错误,我需要找一个散步,替代Mixlib :: Shellout.

简要说明问题:

Here是一个声明,“*毫不奇怪 – 读取是在编译时发生的,但remote_file资源实际上是在执行时创建的.**”

由于此功能,Mixlib :: Shellout.new(“ls”,:cwd =>’/ opt / cubrid / share / webmanager’)引发“无此类文件或目录”错误,即使该目录是在执行时创建的通过当前配方中包含的先前配方.

有没有办法在执行时读取文件/目录?

解决方法

找到答案:将代码包装在ruby_block中,它将在运行时执行.
ruby_block "Check if CURBID Web Manager needs installation" do
  block do
    version = ""

    if File.exists?("#{CWM_HOME_DIR}/appLoader.js")
      # Read the CWM version from file.
      f = File.open("#{CWM_HOME_DIR}/appLoader.js")

      pattern = /Ext\.cwm\.prodVersion = '(\d+\.\d+\.\d+\.\d+)'/

      f.each {|line|
        if match = pattern.match(line)
          version = match[1]
          break
        end
      }

      f.close
    end
  end
end

现在,从上一个配方中创建的文件正确填充版本.

相关文章

validates:conclusion,:presence=>true,:inclusion=>{...
一、redis集群搭建redis3.0以前,提供了Sentinel工具来监控各...
分享一下我老师大神的人工智能教程。零基础!通俗易懂!风趣...
上一篇博文 ruby传参之引用类型 里边定义了一个方法名 mo...
一编程与编程语言 什么是编程语言? 能够被计算机所识别的表...
Ruby类和对象Ruby是一种完美的面向对象编程语言。面向对象编...