После обновления ruby до 2.7.1 тесты rspec выдают ошибку `Bundler::GemfileError для кода состояния 4, но Bundler::GemfileError уже зарегистрирован`
- с использованием Rails 5.2.4.3
- Mac OSX Catalina 10.15.6.
После обновления ruby до 2.7.1 (через rvm) запустился rspec spec
и получил ошибку:
Trying to register Bundler::GemfileError for status code 4 but Bundler::GemfileError is already registered
# /Users/----/.rvm/gems/ruby-2.7.1@xmx/gems/bundler-2.1.4/lib/bundler.rb:7:in `require_relative'
# /Users/----/.rvm/gems/ruby-2.7.1@xmx/gems/bundler-2.1.4/lib/bundler.rb:7:in `<top (required)>'
# ./config/boot.rb:4:in `require'
# ./config/boot.rb:4:in `<top (required)>'
# ./config/application.rb:1:in `require'
# ./config/application.rb:1:in `<top (required)>'
# ./config/environment.rb:2:in `require_relative'
# ./config/environment.rb:2:in `<top (required)>'
# ./spec/spec_helper.rb:18:in `require'
# ./spec/spec_helper.rb:18:in `<top (required)>'
# ./spec/models/activation_spec.rb:1:in `require'
# ./spec/models/activation_spec.rb:1:in `<top (required)>
- переход на глобальный гемсет решил проблему, но использование гемсета по умолчанию продолжало вызывать ошибку.
- удаление и повторная установка бандлера не решила проблему (гарантированный бандлер v 2.1.4)
- Я мог бежать, используя
bundle exec rspec spec
(но хотел реально решить проблему)
4 ответа
Многие обсуждения, которые я обнаружил по этой ошибке, были довольно старыми. Затем, наконец, наткнулся на недавнее обсуждение github:
Выполнение следующего решения моей проблемы:
gem update --system 3.0.8 && gem update --system
Примечание: для запуска обновления без установки документации
gem update --system 3.0.8 --no-document && gem update --system --no-document
обновите драгоценный камень до более высокой версии, так как ваша версия 2.7
В моем случае я пришел на эту страницу из-за той же ошибки в рабочем процессе Github Actions. И исправлениеgem update --system 3.1.2 && gem update --system
(для Ruby 2.7.6) было недостаточно.
Образец файла yaml рабочего процесса имеет следующие строки:
- name: Install Ruby and gems
uses: ruby/setup-ruby@v1
with:
bundler-cache: true
который устанавливает Ruby и драгоценные камни вместе. Я смог избавиться от этой ошибки, удаливbundler-cache: true
и работаетbundle install
снова.
- name: Install Ruby and gems
uses: ruby/setup-ruby@v1
with:
ruby-version: 2.7.6
- name: Upgrade rubygems and reinstall gems
run: |
gem update --system 3.1.2 && gem update --system
gem update bundler
bundle install
Тогда мойrspec
тест пройден без ошибок.