gpt4 book ai didi

ruby - 如何让我的 Ruby gem 'Mechanize' 工作?

转载 作者:数据小太阳 更新时间:2023-10-29 08:42:33 27 4
gpt4 key购买 nike

我需要为我正在学习的类(class)安装 Ruby gem“Mechanize”,并使用它做一个项目。我正在使用 Windows,我尝试使用 ruby​​installer.org 网站上的 devkits 安装版本 2.6.1 和 2.5.3。安装这些版本后,我完成了“gem install mechanize”并且 gem 安装正确。然而,当我什至尝试使用“require 'mechanize'”时,我得到了一个相当大的堆栈跟踪,我无法弄清楚哪里出了问题。我曾多次尝试卸载并重新安装所有内容。

堆栈跟踪:

C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/net-http-persistent-3.0.0/lib/net/http/persistent.rb:205:in `<class:Persistent>': uninitialized constant Process::RLIMIT_NOFILE (NameError)
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/net-http-persistent-3.0.0/lib/net/http/persistent.rb:190:in `<top (required)>'
from C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
from C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:59:in `require'
from C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/mechanize-2.7.6/lib/mechanize.rb:6:in `<top (required)>'
from C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `require'
from C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:135:in `rescue in require'
from C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core_ext/kernel_require.rb:39:in `require'
from test.rb:1:in `<main>'

如有任何帮助或建议,我们将不胜感激。谢谢!

最佳答案

这似乎是此 gem 的依赖项之一中的已知 Windows 问题,请参阅:uninitialized constant Process::RLIMIT_NOFILE (NameError)

您可以尝试那里给出的 hack 将此行放在您的要求之前

Process::RLIMIT_NOFILE = 7 if Gem.win_platform?
require 'mechanize'

如果你真的想成为一名 ruby​​ 开发人员并且你必须使用 windows,你也可以尝试在某种虚拟化环境中运行 ruby​​。参见 Developing in Ruby on Windows

更新:这是一个已知问题,不是针对 mechanize 的,而是它的依赖项之一,请参阅 this issue以及建议的解决方法:

找到 Mechanize gem 的源路径。您应该会发现它是运行结果部分中显示的路径之一

 gem env
#look for a section that says:
- GEM PATHS:

CD 到第 1 步的路径,然后在文本编辑器中 lib/net/http/persistent.rb:并修改:

找到并删除这一行:

DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4

然后在原处添加以下内容:

if Gem.win_platform? then 
DEFAULT_POOL_SIZE = 256
else
DEFAULT_POOL_SIZE = Process.getrlimit(Process::RLIMIT_NOFILE).first / 4
end

并保存文件。请记住,如果您使用 bundler 并计划运行 bundle updatebundle upgrade,您将丢失这些更改。但这有望在未来的某个版本中得到修复。我没有对此进行测试,因为我不使用 Windows,但您可以尝试一下。

关于ruby - 如何让我的 Ruby gem 'Mechanize' 工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54565323/

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