首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Gemfile.lock存在的情况下,捆绑包版本不是AutoSwitching

在Gemfile.lock存在的情况下,捆绑包版本不是AutoSwitching
EN

Stack Overflow用户
提问于 2019-07-25 06:00:55
回答 2查看 141关注 0票数 0

升级bundler后,我收到以下错误:

代码语言:javascript
复制
You must use Bundler 2 or greater with this lockfile.

我在本地安装了1.17.3和2.0.2两个版本。根据我读到的内容,我得到的印象是,这应该会根据Gemfile.lock所表示的内容自动切换版本。这似乎并没有发生。

下面是一些关于我的环境的有用信息。

代码语言:javascript
复制
# cat Gemfile.lock 
GEM
  remote: https://rubygems.org/
  specs:
    domain_name (0.5.20190701)
      unf (>= 0.0.5, < 1.0.0)
    http-cookie (1.0.3)
      domain_name (~> 0.5)
    mime-types (3.2.2)
      mime-types-data (~> 3.2015)
    mime-types-data (3.2019.0331)
    netrc (0.11.0)
    pp (0.1.1)
    rest-client (2.0.2)
      http-cookie (>= 1.0.2, < 2.0)
      mime-types (>= 1.16, < 4.0)
      netrc (~> 0.8)
    terminal-table (1.8.0)
      unicode-display_width (~> 1.1, >= 1.1.1)
    unf (0.1.4)
      unf_ext
      unf_ext (0.0.7.6)
    unicode-display_width (1.6.0)

PLATFORMS
  ruby

DEPENDENCIES
  pp (~> 0.1.1)
  rest-client (~> 2.0)
  terminal-table (~> 1.8)

BUNDLED WITH
   2.0.2
# bundle install
You must use Bundler 2 or greater with this lockfile.
# gem list | grep bundler
bundler (2.0.2, default: 1.17.3, 1.16.6)
EN

回答 2

Stack Overflow用户

发布于 2019-07-25 08:04:48

bundle -v会告诉你现在使用的是哪一个,如果不是2.0,你会得到这个错误。

它还没有(还没有?)足够智能,可以根据Gemfile加载不同版本的bundler。通常情况下,您会让它与bundle exec匹配,但在这里您会遇到一个先有鸡还是先有蛋的问题,因为该命令必须成功,才能加载正确的Bundler版本,但它不能成功,因为它很早就出错了。

删除所有版本的Bundler,只重新安装2.x。

票数 1
EN

Stack Overflow用户

发布于 2019-07-26 06:13:50

事实证明这是我们使用的ruby docker图像的一个问题。它利用了环境变量$BUNDLER_VERSION,该变量覆盖了bundler自动切换。这是通过升级到更新的镜像来解决的。

也可以通过显式地将BUNDLER_VERSION设置为Gemfile所需的版本来解决此问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57191795

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档