gpt4 book ai didi

ruby - 如何在执行时读取文件内容? Chef 在编译时读取

转载 作者:数据小太阳 更新时间:2023-10-29 06:58:12 26 4
gpt4 key购买 nike

因为我遇到了这个 MIXLIB-11我已向 Mixlib 团队报告的错误,我需要找到一个解决方法,一个 Mixlib::Shellout 的替代方法。

简单说一下问题:

Here是这样的声明:“*毫不奇怪——读取发生在编译时,但 remote_file 资源实际上是在执行时创建。**”

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

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

最佳答案

找到答案:将代码包裹在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

现在版本已从上一节中创建的文件正确填充。

关于ruby - 如何在执行时读取文件内容? Chef 在编译时读取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15695909/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com