You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Windows Server下Rails 5.2使用Nokogiri报rb_sysopen错误求助

解决方案

错误原因

  • 第一个Errno::EINVAL错误:默认的open方法只能读取本地文件,无法处理HTTP/HTTPS协议的网络URL,需要先加载Ruby标准库open-uri获得网络资源读取能力。
  • 第二个private method 'open' called for URI:Module错误:你使用的Ruby 2.6版本中,URI.open类方法尚未公开,直接调用会触发私有方法访问报错。

可用代码示例

方案1:使用Kernel#open(兼容你的最初写法)

首先在代码顶部显式引入open-uri库,再调用原有逻辑即可:

# 引入依赖库(Rails环境下也建议显式声明)
require 'open-uri'
require 'nokogiri'

target_url = "https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/categoryscheme/ESTAT/AGRIC"
resource = Nokogiri::XML(open(target_url))

方案2:使用URI实例的open方法(避免模块私有方法报错)

如果你更倾向于使用URI相关的显式调用,可以先解析URL为URI实例再调用实例的open方法:

require 'open-uri'
require 'nokogiri'

target_uri = URI("https://ec.europa.eu/eurostat/api/dissemination/sdmx/2.1/categoryscheme/ESTAT/AGRIC")
resource = Nokogiri::XML(target_uri.open)

异常排查补充

如果引入库后仍出现访问报错,可先排查以下问题:

  • 确认Windows Server 2016的出站防火墙规则允许你的Ruby进程访问目标HTTPS地址
  • 可先单独执行puts open(target_url).read验证是否能正常获取接口返回内容,确认网络连通性后再传入Nokogiri解析

内容的提问来源于stack exchange,提问作者user1185081

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 05:24:02