升级bundler后,我收到以下错误:
You must use Bundler 2 or greater with this lockfile.我在本地安装了1.17.3和2.0.2两个版本。根据我读到的内容,我得到的印象是,这应该会根据Gemfile.lock所表示的内容自动切换版本。这似乎并没有发生。
下面是一些关于我的环境的有用信息。
# 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)发布于 2019-07-25 08:04:48
bundle -v会告诉你现在使用的是哪一个,如果不是2.0,你会得到这个错误。
它还没有(还没有?)足够智能,可以根据Gemfile加载不同版本的bundler。通常情况下,您会让它与bundle exec匹配,但在这里您会遇到一个先有鸡还是先有蛋的问题,因为该命令必须成功,才能加载正确的Bundler版本,但它不能成功,因为它很早就出错了。
删除所有版本的Bundler,只重新安装2.x。
发布于 2019-07-26 06:13:50
事实证明这是我们使用的ruby docker图像的一个问题。它利用了环境变量$BUNDLER_VERSION,该变量覆盖了bundler自动切换。这是通过升级到更新的镜像来解决的。
也可以通过显式地将BUNDLER_VERSION设置为Gemfile所需的版本来解决此问题。
https://stackoverflow.com/questions/57191795
复制相似问题