rbenv - 'find_spec_for_exe': не удается найти сборщик гемов (> = 0.a) с исполняемым комплектом (Gem :: GemNotFoundException) - PullRequest
0 голосов
/ 04 января 2019

Я новичок в rbenv (долгое время пользовался RVM). Сегодня я делаю чистую деинсталляцию моего RVM и устанавливаю rbenv. Мне удалось без проблем установить Ruby 2.5.1.

Но когда я пытаюсь запустить bundle install для проекта сегодня, я получаю следующую ошибку:

'find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

Похоже, что-то не работает с моей установкой, но я не уверен, что не так. Выполнение gem install bundler с sudo не решает проблему.

Вот полный след:

$ echo $SHELL
/bin/zsh


$ cat ~/.gemrc
gem: --no-document
install: --no-document
update: --no-document


$ rbenv versions
  system
* 2.5.1 (set by /Users/zulh/.rbenv/version)


$ ruby -v
ruby 2.5.1p57 (2018-03-29 revision 63029) [x86_64-darwin16]


$ which ruby
/Users/zulh/.rbenv/shims/ruby


$ gem env
RubyGems Environment:
  - RUBYGEMS VERSION: 2.7.6
  - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin16]
  - INSTALLATION DIRECTORY: /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
  - USER INSTALLATION DIRECTORY: /Users/zulh/.gem/ruby/2.5.0
  - RUBY EXECUTABLE: /Users/zulh/.rbenv/versions/2.5.1/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/zulh/.rbenv/versions/2.5.1/bin
  - SPEC CACHE DIRECTORY: /Users/zulh/.gem/specs
  - SYSTEM CONFIGURATION DIRECTORY: /Users/zulh/.rbenv/versions/2.5.1/etc
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-16
  - GEM PATHS:
     - /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/gems/2.5.0
     - /Users/zulh/.gem/ruby/2.5.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "--no-document"
     - "install" => "--no-document"
     - "update" => "--no-document"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /Users/zulh/.rbenv/versions/2.5.1/bin
     - /usr/local/Cellar/rbenv/1.1.1/libexec
     - /Users/zulh/.rbenv/shims
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /Users/zulh/.rbenv/shims
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /Users/zulh/.rbenv/shims
     - /usr/local/bin
     - /Users/zulh/go/bin
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /Library/Frameworks/Mono.framework/Versions/Current/Commands
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin
     - /Users/zulh/projects/tifig/build/tifig
     - /Applications/Postgres.app/Contents/Versions/latest/bin


$ which bundler
/Users/zulh/.rbenv/shims/bundler


$ bundler --version
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundler:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)


$ cd projects/www.ruby-lang.org


$ bundle install --without production
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)


$ sudo gem install bundler
Password:
Successfully installed bundler-2.0.1
1 gem installed


$ which bundler
/Users/zulh/.rbenv/shims/bundler


$ bundler --version
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundler:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundler (Gem::GemNotFoundException)


$ bundle install --without production
Traceback (most recent call last):
    2: from /Users/zulh/.rbenv/versions/2.5.1/bin/bundle:23:in `<main>'
    1: from /Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:308:in `activate_bin_path'
/Users/zulh/.rbenv/versions/2.5.1/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': can't find gem bundler (>= 0.a) with executable bundle (Gem::GemNotFoundException)

Как решить эту проблему?

Примечание: я использую OSX 10.12.6

Ответы [ 6 ]

0 голосов
/ 10 июля 2019

Иногда достаточно просто запустить bundle update --bundler в каталоге проекта.

0 голосов
/ 18 февраля 2019

Я удалил Gemfile.lock, и после этого все заработало.

0 голосов
/ 08 февраля 2019

Я использую rbenv 1.1.1 и ruby ​​2.5.1 и получил ту же ошибку при запуске bundle install. gem update --system решил проблему

0 голосов
/ 05 января 2019

Вот как я наконец решил эту проблему:

$ cd /path/to/my/project/
$ gem install bundler -v 1.17.3
$ bundle install
0 голосов
/ 05 января 2019

Связка была обновлена ​​с 1,7 до 2 января 4 . В связи с обновлением gem install bundler установит версию 2 с 4 января, если вы пытаетесь установить пакет без указания версии. А для bundler 2.0 требуется rubygems версия как минимум 3.0.

Сначала проверьте ваши rubygems, установленные на вашем локальном компьютере, используя gem --version. Если вы используете ruby ​​v2.5.1, ваша версия rubygems будет иметь версию 2.7.x и меньше 3.x.

RubyGems Environment:
    - RUBYGEMS VERSION: 2.7.6
    - RUBY VERSION: 2.5.1 (2018-03-29 patchlevel 57) [x86_64-darwin17]

В rubygems версии 3.x команда gem install bundler не будет работать хорошо.

Чтобы исправить проблему,

1) обновление рубинов

gem update --system

2) установить старую версию bundler

gem install bundler -v 1.17.3

3) установить Ruby 2.6. 2.6 был выпущен в прошлое Рождество, Ruby 2.6 объединяет bundler gem и использует rubygems 3.0.1 по умолчанию . Начиная с Ruby 2.6, вам не нужно устанавливать упаковщик вручную.

rbenv install 2.6
0 голосов
/ 05 января 2019

Просто хотел упомянуть, я нашел это только сегодня, когда искал - и сам исправил. Вот ключ;

не может найти сборщик гемов (> = 0.a) с исполняемым комплектом (Gem :: GemNotFoundException)

Я ничего не знаю об этом, я хакер, которому повезло - я заметил, что в проверенном git-репозитории есть исполняемый файл bin / bundle, с которым я пытаюсь работать, и попытался запустить его напрямую чистого отчаяния. Приведенное выше сообщение подразумевало (для меня), что исполняемый файл чего-то не работал, а не то, что он не присутствовал (поскольку в некоторых поисках отсутствовал отмеченный текст, и он просто не мог найти вещь), так что .. ..anyways.

[rndusr@monster live]$ bin/bundle
Traceback (most recent call last):
    2: from bin/bundle:3:in `<main>'
    1: from /home/rndusr/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:263:in `bin_path'
/home/rndusr/.rbenv/versions/2.5.3/lib/ruby/2.5.0/rubygems.rb:289:in `find_spec_for_exe': Could not find 'bundler' (1.16.6) required by your /usr/src/git/redacted/live/Gemfile.lock. (Gem::GemNotFoundException)
To update to the lastest version installed on your system, run `bundle update --bundler`.
To install the missing version, run `gem install bundler:1.16.6`

Привет, наконец, сообщение об ошибке, которое помогает!

Таким образом, я выполнил gem install bundler:1.16.6 и повторно выполнил исходную команду, и, к моей огромной (и с трудом заработанной) радости, она, наконец, сработала.

Я не уверен на 100%, что подходит как «ответ» - не просто слепо запустите команду, к которой я пришел, но скорее попробуйте повторить процесс, чтобы потенциально выявить, какая проблема у вас возникла. Удачи!

РЕДАКТИРОВАТЬ для дальнейшей поддержки: Хотя я и пришел к такому выводу, я также обнаружил, что команда bundle потерпит неудачу оптом - но только в каталоге проекта - что также подразумевает, что это что-то на 100% связанные с проектом. Я не знаю, что такое bundle или как он работает внутри, но по такому поведению я понял, что это была перегрузка скриптов / исполняемых файлов в репозитории git (аналогично тому, как команды git могут быть контекстными для рабочих директорий), так что проверка файловой структуры была следующей , В этот момент была обнаружена папка bin с исполняемым файлом с именем bundle, который описан выше.

FWIW - кто-то, кто знает больше, чем я, относительно bundle (я не понимаю его достаточно хорошо, чтобы знать, кому сообщать об этом, или даже если это ненормальное поведение), должен потенциально подать проблему на свой github, указывая, что он молча маскирует сообщения об ошибках, которые они создали, чтобы помочь пользователю найти правильное решение. Лично я бы bin/bundle сгенерировал код завершения, указывающий на полезный вывод, приходящий к stderr, и передавал его через ...

...