IMDB gem不能在Windows上使用Ruby 2.2 - 不能使用Nokogiri 1.6.7.rc4

时间:2015-11-28 11:34:39

标签: ruby windows gem nokogiri imdb

我试图在Windows上使用带有Ruby 2.2的IMDB gem但是这个gem似乎强制使用旧版本的Nokogiri,它与我在Windows上的Ruby版本不兼容。

这是我得到的信息:

The bundle currently has Nokogiri locked at 1.6.2.1.

我确实安装了RC4版本。

有没有办法强制IMDB使用RC4版本? 还是我没想到的其他解决方案?

2 个答案:

答案 0 :(得分:1)

Windows上最简单的解决方案可能是使用Linux创建虚拟机,然后安装Ruby。

Windows在处理宝石方面存在许多问题。

答案 1 :(得分:0)

序言和警告

这个解决方案只是一个丑陋的黑客,我不建议使用它。

最好的解决方案是使用(可能的)“乐观”版本约束的imdb-gem的更正版本。

免责声明2:我不使用bundler,也许这个解决方案并不像我展示的那样完全正常。但捆绑者的过程应该类似。

问题的根源

gemspec of the imdb-gem包含命令:

s.add_dependency 'nokogiri', '= 1.6.5'

或版本0.8.2

s.add_dependency 'nokogiri', '= 1.6.2.1'

如果这包含像

这样的乐观版本约束
s.add_dependency 'nokogiri', '=~ 1.6'

您可以使用您使用的版本(假设没有理由使用此特定版本)。

黑客攻击gemspec

gem install期间,gemspec被复制到类似的位置 [ruby-installation-path]/lib\ruby\gems\2.1.0\specifications

查找文件imdb-0.8.2.gemspec并进行此更改:

    if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
#  Begin of Hack the nokogiri version
#      s.add_runtime_dependency(%q<nokogiri>, ["= 1.6.2.1"])
      s.add_runtime_dependency(%q<nokogiri>, ["~> 1.6"])
#  End of Hack the nokogiri version      
      s.add_development_dependency(%q<rake>, ["~> 10.0.3"])

然后尝试你的脚本是否有效。

我使用nokogiri版本1.6.6.2测试并且没有检测到任何问题。

如果版本1.6.7.rc4也有效,我建议要求对https://github.com/ariejan/imdb和新版本的imdb-gem进行更改。