【问题标题】:Bundler: how to remove uninstalled gemsBundler:如何删除已卸载的 gem
【发布时间】:2020-12-21 12:58:23
【问题描述】:

我正在尝试安装 pg_search gem。在第一次尝试中,我没有注意必要的 ruby​​ 版本(我们使用的是 2.3.12.4 是必需的),在出现的错误消息中,我被要求运行 bundle update,但它更新了 pg_search 2.3.5 需要红宝石 >= 2.5。即使我指定了旧版本的 gem,它仍然显示相同的消息:

Gem::InstallError: pg_search requires Ruby version >= 2.5.
An error occurred while installing pg_search (2.3.5), and Bundler cannot continue.
Make sure that `gem install pg_search -v '2.3.5'` succeeds before bundling.

我已经通过运行docker-compose run web gem install pg_search -v 2.1.4 安装了gem,并重新创建了容器。我的宝石文件:

source 'https://rubygems.org'

gem 'rails', '~> 5.2.0'
# Use sqlite3 as the database for Active Record
# Use Puma as the app server

#gem 'mina-puma', :require => false
gem 'puma', '~> 3.7.1'
gem 'pg', '~> 0.18'
gem 'pg_search', '~> 2.1', '>= 2.1.4'
...

捆绑器版本:bundler (>= 1.3.0)

我想知道如何删除 pg_search 2.3.5 并安装 2.1.4

【问题讨论】:

    标签: ruby-on-rails ruby rubygems bundler


    【解决方案1】:

    即使我指定了旧版本的 gem

    不,你没有。

    您指定了'~> 2.1', '>= 2.1.4',这意味着任何2.1.4 <= version < 3.0.0

    通过运行bundle update,这安装了满足您要求的最新可用版本,显然是2.3.5,而不是2.1.4

    如果你还需要对 ruby​​ 版本2.3.1 指定一个约束,你也可以把它放在Gemfile 中:

    ruby '2.3.1'
    

    ...然后运行bundle update 也会在查找最新的兼容依赖项时考虑到这一点。


    我想知道如何删除 pg_search 2.3.5 并安装 2.1.4

    您没有针对此 ruby​​ 版本安装 2.3.5 版本,因为它不兼容。

    显然你已经安装了2.1.4版本。

    问题是您的Gemfile.lock 仍然期待版本2.3.5。有几种方法可以解决此问题,但您需要通过一种或另一种方法更新 Gemfile.lock 以使您的 ruby​​ 版本具有一组兼容的依赖项。

    最简单的方法可能是重新运行bundle update pg_search,但请确保这次您实际上使用的是正确的 ruby​​ 版本。这应该会降低依赖关系,因为较新的库版本与较旧的 ruby​​ 版本不兼容。

    如果您仍然遇到问题,您可以采纳我的建议,将 ruby 约束添加到 Gemfile,并恢复您最近所做的任何其他更改,这些更改导致了这种不兼容的依赖组合。

    【讨论】:

    • 指定一个ruby约束解决了这个问题,谢谢。
    猜你喜欢
    • 2012-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-15
    • 2012-05-05
    • 1970-01-01
    • 2010-10-01
    • 1970-01-01
    相关资源
    最近更新 更多