安装了Bundler 2.0.1后,Rails说“必须使用Bundler 2或更高版本”吗?

时间:2019-01-06 16:01:00

标签: ruby-on-rails rubygems version bundler

我是Rails的新手,他正在DigitalOcean小滴上试用Rails。安装似乎可以正常工作,但是当我尝试生成支架时却收到一个奇怪的错误消息:

DO 10:48 Rails/simple (master) → rails generate scaffold User name:string email:string
Traceback (most recent call last):
        5: from bin/rails:3:in `<main>'
        4: from bin/rails:3:in `load'
        3: from /home/tony/rails/simple/bin/spring:10:in `<top (required)>'
        2: from /home/tony/rails/simple/bin/spring:10:in `new'
        1: from /home/tony/.rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/lockfile_parser.rb:95:in `initialize'
/home/tony/.rvm/rubies/ruby-2.6.0/lib/ruby/2.6.0/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version': You must use Bundler 2 or greater with this lockfile. (Bundler::LockfileError)
DO 10:49 Rails/simple (master) → bundle list bundler
/home/tony/.rvm/gems/ruby-2.6.0/gems/bundler-2.0.1
DO 10:50 Rails/simple (master) → gem list bundler

*** LOCAL GEMS ***

bundler (2.0.1, default: 1.17.2)
bundler-unload (1.0.2)
rubygems-bundler (1.4.5)

也就是说,当前的Bundler gem是2.0.1版,但是Rails仍然认为它不够用。

我在网络上找不到任何类似的内容。我可以看到的唯一危险信号是捆绑程序gem显示默认版本1.17.2。我如何开始诊断问题?

6 个答案:

答案 0 :(得分:9)

我遇到了同样的问题,并通过降级为gem uninstall bundler,然后降级为gem install bundler -v 1.17.3来恢复到最后一个pre 2版本来解决。

我在使用不同版本管理器(ASDF,rbenv,rvm)的3个独立系统中看​​到了这一点,这使我相信2.x版本的bundler尚未准备好用于生产。

有一些信息可以使两个版本都能很好地发挥here,但我也没有成功。

答案 1 :(得分:5)

这对我有帮助:gem update --system

答案 2 :(得分:1)

这是我的解决方案:

  1. (如果您使用的是旧版的Bundler),请运行以下命令:

    bundle update --bundler

  2. 运行命令:

    gem update --system

  3. 运行耙子

    rake db:migrate

答案 3 :(得分:1)

尝试上述任何一种解决方案后,重新启动终端窗口。

即使我卸载了旧版本的捆包机,直到我杀死了终端并打开了一个新窗口,我仍然停留在终端上以显示捆绑软件的2个版本。

答案 4 :(得分:0)

将ruby版本(2.4.6)更新为-

后出现问题
  

此锁文件必须使用Bundler 2或更高版本。

这是我的解决方法-
当我检查捆绑器版本bundler -v

$ Bundler version 1.16.1  

我使用-

更新了Bundle版本
$ gem install bundler -v 2.0.1

问题解决了!

答案 5 :(得分:0)

我的解决方法如下:

通过源代码删除ruby并安装Ruby 2.6.7,并软链接到/usr/bin/

wget https://cache.ruby-lang.org/pub/ruby/2.6/ruby-2.6.7.tar.gz
tar xvf ruby-2.6.7.tar.gz
./configure 
make -j32 && sudo make install
sudo ln -sf /usr/local/bin/ruby /usr/bin/ruby

然后,运行:

bundle install

然后,运行:

sudo bundle exec jekyll serve

它对我有用。