【问题标题】:Why does Rails-4.2.5 NOT install the expected version of Nokogiri (1.6.7.rc4)为什么 Rails-4.2.5 没有安装预期版本的 Nokogiri (1.6.7.rc4)
【发布时间】:2023-03-16 20:09:01
【问题描述】:

我在 Windows 10 x64 上安装了最新的 ruby​​ 和最新的 rails。起初,一切都运行良好。

然后我创建了新应用程序,但由于 nokogiri 1.6.6.4 x64-mingw32 问题而无法启动服务器。所以我在互联网上查看并下载了最新的 nokogiri 1.6.7.rc4 x64-mingw32 并更新了我的 gem 并制作了 bundle update nokogiri。所以服务器现在工作得很好。那里没有问题。

我想知道的是,为什么当我创建一个新应用程序“rails new appname”时,它总是放入我的 gem 文件 nokogiri 1.6.6.4?

我卸载了它,但每次创建新应用程序时,我都必须手动编辑 gem 文件并更新 bundle nokogiri,以便服务器可以使用最新的 nokogiri。是否可以更改 ruby​​/rails/gem 的配置中的某些内容,以便在创建时安装最新的 nokogiri?

因为 1.6.6.4 直到你创建一个应用程序才安装,然后它又被安装了,为什么?

感谢您的帮助。

【问题讨论】:

  • 您使用的是什么版本的 Ruby 和什么版本的 Rails?当你创建一个新的 Rails 项目时,你传递了哪些选项?在您更改任何内容之前,您的新项目的 Gemfile.lock 文件对依赖关系有何规定?
  • ruby 2.2.3., rails 4.2.5., 我只创建 rails new appname 没有选项。所有标准安装。 gemfile.lock 说 nokogiri (1.6.6.4-x64-mingw32)。我还没有真正体验过rails。如果可以在创建 nokogiri (1.6.7.rc4-x64-mingw32) 之后传递它会处于锁定文件中,那就太好了。
  • 根据 RubyGems.org 1.6.7.rc4 - 2015 年 11 月 22 日 x64-mingw32 (4.31 MB) 可用。您是否清除了本地 gem 缓存?这可能只是传播延迟。
  • 不,这里还有其他事情发生。 RubyGems 在早期安装不需要的预发布版本时遇到了一些问题。我想知道他们是否在修复时破坏了其他东西。我在 Gemfile.lock 中看到了这个:' rails-dom-testing (1.0.7) activesupport (>= 4.2.0.beta, 1.6.0)`
  • 啊。我想我看到了问题。 rails-dom-testing gem 在其规范文件中有这个:spec.add_dependency "nokogiri", "~> 1.6.0"。由于它不需要预发布版本,我怀疑这会阻止 dot-rc4 nokogiri。您可以在 github 上提出问题,让 Rails 团队查看:https://github.com/rails/rails/issues

标签: ruby windows ruby-on-rails-4


【解决方案1】:

这确实是由我在 cmets 中怀疑的 rails-dom-testing 依赖引起的。要解决此问题,在安装新的 rails 项目后cd 进入新项目的根目录并执行以下操作:

gvim ./libexec/bundle/lib/specifications/rails-dom-testing-1.0.7.gemspec

找到这一行:

s.add_runtime_dependency(%q<nokogiri>, ["~> 1.6.0"])

并将其更改为:

s.add_runtime_dependency(%q<nokogiri>, ["~> 1.6.7.rc4"])

现在运行bundle update。此修复将持续到 rails-dom-testing gem 更新。

【讨论】:

  • 所以在那之后我将能够创建新项目并且不必编辑 gemfile 和捆绑更新 nokogiri?我会尽力回复你
  • 非常感谢,这正是我们所需要的。我不再变老了。奇迹般有效。谢谢。
  • 您需要为每个新项目执行此操作,因为问题 gem 将使用相同的 gemspec 文件进行初始化。编辑项目后,您只需在 rails-dom-testing gem 更新且更新后的 gem 有相同问题时执行此操作。无论如何,一旦 Nokogiri 1.6.7 发布,这个问题就会消失。
【解决方案2】:

我也遇到过这个问题。

就我而言,我想使用截至撰写本文时最新的 Nokogiri 版本 1.6.7.X。但是 Rails 总是包含 Rubygems 发布的版本。如果我们检查 version 的内容,我们会看到它是 1.6.6.4。

Rails 大量使用 Nokogiri。我们可以搜索project 并查看它是否用于集成测试。当您点击rails new my_app 时,它会构建一个Gemfile 并运行捆绑安装。所以无论 Rubygems.org 手头有什么版本,它都会安装那个版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-04-11
    • 2019-11-20
    • 2020-05-21
    • 1970-01-01
    • 2016-03-02
    • 2017-07-03
    • 1970-01-01
    相关资源
    最近更新 更多