Ruby 我怎样才能得到我的红宝石&x27;机械化';工作?

Ruby 我怎样才能得到我的红宝石&x27;机械化';工作?,ruby,rubygems,mechanize,Ruby,Rubygems,Mechanize,我需要为我正在使用的类安装RubyGem“Mechanize”,并使用它进行项目。我使用的是windows,我已经尝试过使用rubyinstaller.org网站上的devkits安装2.6.1和2.5.3版。安装这些版本后,我完成了“gem安装机械化”,gem安装正确。然而,当我尝试使用“require'mechanize'”时,我得到了一个相当大的堆栈跟踪,我无法找出哪里出了问题。我多次尝试卸载和重新安装所有内容 堆栈跟踪: C:/Ruby25-x64/lib/ruby/gems/2.5.0

我需要为我正在使用的类安装RubyGem“Mechanize”,并使用它进行项目。我使用的是windows,我已经尝试过使用rubyinstaller.org网站上的devkits安装2.6.1和2.5.3版。安装这些版本后,我完成了“gem安装机械化”,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>'
C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/net-http-persistent-3.0/lib/net/http/persistent.rb:205:in`':未初始化常量进程::RLIMIT_NOFILE(名称错误)
来自C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/net-http-persistent-3.0.0/lib/net/http/persistent.rb:190:in`'
来自C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core\u ext/kernel\u require.rb:59:in'require'
来自C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core\u ext/kernel\u require.rb:59:in'require'
来自C:/Ruby25-x64/lib/ruby/gems/2.5.0/gems/mechanize-2.7.6/lib/mechanize.rb:6:in`'
来自C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core\u ext/kernel\u require.rb:135:in'require'
来自C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core\u ext/kernel\u require.rb:135:in'rescue in require'
来自C:/Ruby25-x64/lib/ruby/2.5.0/rubygems/core\u ext/kernel\u require.rb:39:in'require'
来自test.rb:1:in`'

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

这似乎是此gem的一个依赖项中已知的windows问题,请参阅:

你可以试试那里的技巧,把这条线放在你需要的之前

Process::RLIMIT_NOFILE = 7 if Gem.win_platform?
require 'mechanize'
如果你想成为一名ruby开发者并且必须使用windows,你也可以尝试在某种虚拟化环境中运行ruby。看

更新:这不是mechanize的已知问题,而是它的一个依赖项。请参阅和建议的解决方法:

找到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并计划运行
捆绑包更新
捆绑包升级
,您将丢失这些更改。但这有望在将来的某个版本中得到修复。我没有测试过这个,因为我不使用windows,但你可以试试。

这为我解决了这个问题。Windows 10 v1803 x64,使用rubyinstaller-devkit-2.5.3-1-x64.exe。谢谢