【问题标题】:How does one upgrade a specific ruby gem to a specific (or the latest) version?如何将特定的 ruby​​ gem 升级到特定(或最新)版本?
【发布时间】:2018-03-23 16:43:22
【问题描述】:

我正在尝试将 gem (hydra-derivatives) 升级到版本 3.3.2 以查看它是否解决了我们遇到的错误。

hydra-derivatives 不是 Gemfile gem;它被捆绑为另一个 gem 的依赖项,称为 hydra-works

我的尝试

  1. bundle update --conservative hydra-derivatives 但这只升级了 hydra-derivatives 到 3.2.2(&我们想要 3.3.2)及其依赖 mini_magick 从 4.5.1 到 4.8.0
  2. 添加 gem 'hydra-derivatives', '~> 3.3.2' 但这给了我:

    You have requested:
      hydra-derivatives ~> 3.3.2
    
    The bundle currently has hydra-derivatives locked at 3.2.1.
    Try running `bundle update hydra-derivatives`
    
    If you are updating multiple gems in your Gemfile at once,
    try passing them all to `bundle update`
    
  3. 我不想运行 bundle update hydra-derivatives,因为我不希望它更新一堆不必要的 gem 并导致问题,因此我阅读了 --conservative

    一个。我还是跑了这个来测试它,它把目标 gem 升级到只有 3.2.2 和总共 15 个 gem!

【问题讨论】:

  • 你看到这个stackoverflow.com/questions/7434263/…了吗?
  • @Preston 不,我没有遇到那个。我现在就研究一下,看看是否有帮助,然后在这里报告。
  • @Preston 感谢您提供更多信息!不幸的是,我只是认为这个答案就是我在上面的“尝试#2”中所做的。 “您需要在 Gemfile 中明确指定 B gem 才能使用 git 存储库或其他版本。”
  • @Preston 它确实让我思考。 hydra-derivatives 的父 gem,hydra-works,列出了 ~> 3.0 的悲观版本,所以这意味着任何高达 4.0 的版本。奇怪,因为它说它被锁定在 3.2.1。
  • 尝试 fork hydra-works gem 并自己设置依赖项

标签: ruby-on-rails ruby rubygems bundler


【解决方案1】:

从您的 Gemfile 中移除 hydra-works gem。 从已安装的 gem 位置手动删除 gem 及其依赖项,或者如果您在其自己的 Ruby 环境中使用 rbenvrvm 运行 bundle clean --force 运行应用程序。
注意bundle clean --force 将删除 Ruby 版本中的所有 gem,除了 Gemfile 中指定的那些。如果您有其他应用程序使用相同版本的 Ruby,如果它们与您在此应用程序中使用的不同,则必须重新安装该应用程序的 gem。

将此添加到您的 Gemfile 中

gem 'hydra-derivatives', '~> 3.3.2'
gem 'hydra-works'

然后运行bundle install

您现在应该在 Gemfile.lock 中看到正确的依赖版本

【讨论】:

  • 已切换到不同的优先级。将回到这一点,并给予它应有的关注。目前正在编写一些测试来看看为什么会出现这个错误,而不是仅仅假设升级 gem 是解决方案!
  • 经过一些实验和事实检查,我可以确认最新版本的 hydra-derivatives 3.3.2 最终取决于法拉第 (~> 0.12.1),但是另一个 gem 取决于法拉第 (~ > 0.9.0)。所以这是我的问题!我将尝试分叉 iiif-presentation (~> 0.1.0) 并将法拉第的 gemspec 提高到法拉第 (~> 0.12.1)。抱歉浪费了时间,我希望我能了解更多!
  • 临时添加间接依赖 (json) 并运行 bundle update json 对我有用。
猜你喜欢
  • 1970-01-01
  • 2022-08-07
  • 2019-10-10
  • 1970-01-01
  • 2022-11-26
  • 1970-01-01
  • 1970-01-01
  • 2019-05-12
  • 2022-01-04
相关资源
最近更新 更多