如何降级 gem 文件中的 gem?

How to downgrande a gem in the gemfile?

我的 Gemfile.lock

里有这个
 sequel (5.15.0)

我想将 gem 版本降级到 4.39.0,所以我进入我的 Gemfile 并在 gem 声明旁边添加一个版本:

gem 'sequel', '4.39.0'

和运行bundle exec bundle install

但它给了我:

You have requested:
  sequel = 4.39.0

The bundle currently has sequel locked at 5.15.0.
Try running `bundle update sequel`

If you are updating multiple gems in your Gemfile at once,
try passing them all to `bundle update`
Run `bundle install` to install missing gems

。 所以我尝试 运行 bundle exec bundle update sequel 但它 returns 给我同样的信息。 如何降级 gem?

首先尝试更新依赖的gem。如果您要降级,可能是对其他 gem 的依赖关系被破坏了。

最佳实践:

bundle update sequel dependent_gemnames...

如果您没有找到依赖的gem,您也可以尝试更新所有的gem。但是注意!这可能会导致不必要的副作用。

bundle update

最后也是最丑陋的选择是删除您的 Gemfile.lock 和 运行

bundle install

这将重建您的完整 Gem 堆栈,并且应该能够创建一个有效的 Gemfile.lock

您只需致电

bundle update sequel

没有前面的 bundle exec

您遇到的问题是由 bundle exec 评估当前 Gemfile 以先执行后一个命令引起的。在这里,它会发现 Gemfile 中指定的宝石与您当前的 Gemfile.lock 中指定的宝石之间的差异,然后退出。

一般来说,任何捆绑包调用都不需要以 bundle exec 为前缀。