升级捆绑器后,我收到以下错误:
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)
答案 0 :(得分:1)
bundle -v
会告诉您您正在使用哪个,如果不是2.0,则会出现此错误。
根据bundler
来加载Gemfile
的不同版本还不够(还不够?)。通常,您可以使用bundle exec
使之运行,但是此时您遇到了一个鸡与蛋的问题,因为该命令必须在成功加载正确的Bundler版本之前成功执行,但是不能执行,因为它会出错早点出来。
删除所有版本的Bundler并仅重新安装2.x。
答案 1 :(得分:0)
事实证明,这是我们使用的ruby docker镜像的问题。它利用环境变量$ BUNDLER_VERSION覆盖捆绑程序的自动切换。通过升级到较新的映像即可解决此问题。
也可以通过将BUNDLER_VERSION显式设置为Gemfile所需的版本来解决。