После обновления 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

      gem update --system

меня устраивает

обновите драгоценный камень до более высокой версии, так как ваша версия 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тест пройден без ошибок.

Другие вопросы по тегам