Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.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
Ruby 为什么自从升级到Puppet4后,自定义事实再也找不到“rb_sysopen”?_Ruby_Puppet_Facter - Fatal编程技术网

Ruby 为什么自从升级到Puppet4后,自定义事实再也找不到“rb_sysopen”?

Ruby 为什么自从升级到Puppet4后,自定义事实再也找不到“rb_sysopen”?,ruby,puppet,facter,Ruby,Puppet,Facter,以下是: 分析 自从升级到Puppet 4后,由于某种原因,rb\u sysopen似乎再也找不到了(没有这样的文件或目录@rb\u sysopen) Puppet4似乎使用嵌入式ruby版本,而不是安装在主机上的版本(Puppet3): Ruby 2.1.5中是否不存在rb_sysopen?没有发现任何证据 可能发生了与事实相关的变化,导致了问题?未发现任何相关信息 问题 为什么升级到Puppet4后,自定义事实无法再找到rb\u sysopen 我将在这两个事实中包括require

以下是:

分析

  • 自从升级到Puppet 4后,由于某种原因,
    rb\u sysopen
    似乎再也找不到了(
    没有这样的文件或目录@rb\u sysopen
  • Puppet4似乎使用嵌入式ruby版本,而不是安装在主机上的版本(Puppet3):

  • Ruby 2.1.5中是否不存在
    rb_sysopen
    ?没有发现任何证据
  • 可能发生了与事实相关的变化,导致了问题?未发现任何相关信息
问题


为什么升级到Puppet4后,自定义事实无法再找到
rb\u sysopen

我将在这两个事实中包括
require'openuri'
,但我不明白为什么需要这样做,因为升级到了Puppet4

冗长

一旦
require'openuri'
包含在一个自定义事实中,问题就解决了

# returns latest gitversion, e.g. 2.8.2
Facter.add("latest_gitversion") do
  setcode do
require 'open-uri'

    url="https://git-scm.com/downloads"

    file = open("#{url}")
    contents = file.read()

    match = contents.match(/RelNotes.*((\d\.){2}\d)/)
    match[1]
  end
end
一旦注释掉了
require'openuri'
,问题就会再次出现:

Error: Facter: error while resolving custom fact "latest_gitversion": No such file or directory @ rb_sysopen - https://git-scm.com/downloads
Error: Facter: error while resolving custom fact "latest_packerversion": No such file or directory @ rb_sysopen - https://www.packer.io/downloads.html

目前还不清楚是什么导致了这个问题。

简明

我将在这两个事实中包括
require'openuri'
,但我不明白为什么需要这样做,因为升级到了Puppet4

冗长

一旦
require'openuri'
包含在一个自定义事实中,问题就解决了

# returns latest gitversion, e.g. 2.8.2
Facter.add("latest_gitversion") do
  setcode do
require 'open-uri'

    url="https://git-scm.com/downloads"

    file = open("#{url}")
    contents = file.read()

    match = contents.match(/RelNotes.*((\d\.){2}\d)/)
    match[1]
  end
end
一旦注释掉了
require'openuri'
,问题就会再次出现:

Error: Facter: error while resolving custom fact "latest_gitversion": No such file or directory @ rb_sysopen - https://git-scm.com/downloads
Error: Facter: error while resolving custom fact "latest_packerversion": No such file or directory @ rb_sysopen - https://www.packer.io/downloads.html

目前还不清楚是什么导致了问题。

这是因素2还是因素3?facter3是用c++11重写的。此外,Facter的本意并不是这样(它是用来收集服务器信息的)。你可能想考虑另一个工具。“MuttSuChar你推荐什么工具?是FACTER 2还是FACTER 3?”facter3是用c++11重写的。此外,Facter的本意并不是这样(它是用来收集服务器信息的)。您可能想考虑另一个工具。@ MttStuuChar,您推荐什么工具?您正在通过HTTP/Apache检索信息,所以<代码>开放URI < /代码>是必要的。但是为什么在使用PUPPET3时没有出现问题?可能您使用的是FACTER 2,它需要/包括<代码>开放URI < /代码>更高,您现在正在使用Facter 3,这并不是因为重写。@MattSchuchard
/opt/puppetlabs/bin/Facter--version:3.2.0
@MattSchuchard您可以发布您的解释和建议的解决方法作为答案吗?您正在通过http/apache检索信息,所以这里需要
打开uri
。但是为什么在使用了puppet3?可能您使用的是Facter 2,它要求/包括更高级别的开放uri,而您现在使用的是Facter 3,这不是因为重写。@MattSchuchard
/opt/puppetlabs/bin/Facter--version:3.2.0
@MattSchuchard您可以发布您的解释和建议的解决方法作为答案吗?