我是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。我如何开始诊断问题?
答案 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)
这是我的解决方案:
(如果您使用的是旧版的Bundler),请运行以下命令:
bundle update --bundler
运行命令:
gem update --system
运行耙子
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
它对我有用。