RVM Bundle Install Missing Gem Error, даже если установлен gem - PullRequest
55 голосов
/ 24 января 2012

Я получаю следующую ошибку, хотя в настоящее время у меня установлен гем Bundler (он появляется при запуске $ gem list).

ERROR: Gem bundler is not installed, run `gem install bundler` first.

Я использую RVM, и мой $ PATH выглядит следующим образом:

/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin:
/Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global/bin:
/Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin:
/Users/cjstingl/.rvm/bin:
/Users/cjstingl/.bin:
/usr/local/sbin:
/usr/local/Cellar/php/5.3.6/bin:
/usr/local/share/python:
/usr/bin:
/bin:
/usr/sbin:
/sbin:
/usr/local/bin:
/usr/X11/bin

Также это мой драгоценный камень env

RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.15
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin11.2.0]
  - INSTALLATION DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
  - RUBY EXECUTABLE: /Users/cjstingl/.rvm/rubies/ruby-1.9.2-p290/bin/ruby
  - EXECUTABLE DIRECTORY: /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-11
  - GEM PATHS:
     - /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@rails3tutorial2ndEd
     - /Users/cjstingl/.rvm/gems/ruby-1.9.2-p290@global
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => false
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "-n/usr/local/bin --no-ri --no-rdoc --no-user-install"
  - REMOTE SOURCES:
     - http://rubygems.org/

Также: использование команды bundle -v возвращает ту же ошибку

Я пытался внедрить RVM и переустановить, что, похоже, не работает. Я в тупике, и любая помощь будет оценена.

Ответы [ 19 ]

94 голосов
/ 18 марта 2012

Добавление следующего (взятого из .bash_profile) в .bashrc исправило это для меня:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" 
19 голосов
/ 31 января 2012

У меня была такая же проблема с чистой установкой RVM 1.10.3. После переустановки я заметил, что упаковщик установлен, и что каталоги / bin добавляются в мой $ PATH, но эти каталоги bin фактически не существуют. Я думаю, что это просто ошибка RVM.

В качестве быстрого исправления я вручную скопировал двоичный файл bundle в существующий каталог bin RVM. Это, похоже, исправило мою проблему:

$ cd ~/.rvm
$ cp gems/ruby-1.9.3-p0/gems/bundler-1.0.21/bin/bundle rubies/ruby-1.9.3-p0/bin/

Версии Ruby и Bundler в этих путях, вероятно, будут отличаться для вас.


Решение, приведенное выше, работает, однако оно меня беспокоило, поэтому я отправил его парням rvm; получается, что мой файл ~ / .gemrc переопределял местоположение гема с помощью этой строки:

- "gem" => "-n/usr/local/bin"

Удаление это исправило это для меня. Смотрите здесь для полной темы: https://github.com/wayneeseguin/rvm/issues/1043#issuecomment-7336267

10 голосов
/ 30 июня 2012

У меня была похожая проблема, и ответ (по крайней мере для меня) был безумно простым после большого количества проб и ошибок.

Это определенно проблема пути, и @ gamecreature упомянул порядок пути.решающий ключ для меня.

Я не уверен, как это произошло, но у меня был $HOME/.rvm/bin в качестве первого элемента в моем экспорте PATH.

Это не нужно, так как этот каталог добавляется впуть в правильном порядке через поиск в файле rvm.

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

Поэтому я решил просто удалить $HOME/.rvm/bin из моего экспорта PATH.

Если у вас несколько файлов инициализации (.bashrc, .bash_profile, .profile), обязательно следуйте рекомендациям на странице устранения неполадок rvm :

, убедитесь, что получение файла rvm происходит последним в файлах вашего профиля (.bash_profile / .bashrc / .zshrc) по существу после любых настроек PATH / функций или псевдонимов.

Но я бы также порекомендовал проверить оставшуюся часть вашего определения PATHЧтобы убедиться нет объявленных дубликатов, которые бы имели приоритет.

7 голосов
/ 08 сентября 2012

У меня была похожая проблема.Оказалось, что у меня не было специфичного для проекта файла .rvmrc.Я только что создал его, используя

rvm --rvmrc --create 1.9.3@my_project_name

В моем проекте dir

Это решило проблему

5 голосов
/ 06 февраля 2013

Если вы дошли до этого и все еще бьетесь головой о стену ...

Моя проблема заключалась в том, что rvm install 1.8.7 не удалось в конце установки, но, похоже,были успешными (у меня был ruby ​​1.8.7 и я мог создавать наборы гемов)

Но похоже, что $GEM_HOME установлен поздно в сценарии установки, и так как он не был установлен, rvm не смотрел вПравильное место для драгоценных камней.

Я пробежал rvm reinstall 1.8.7 и тщательно искал ошибки.

Что меня предупредило, так это тема: https://groups.google.com/d/topic/rubyversionmanager/aUBDxbBzZpE/discussion

Вы можете проверить, чтобы увидетьесли это ваша проблема, запустив

echo $GEM_HOME или gem env или проверив журнал установки rvm (см. ссылку выше)

Вы видите свою версию ruby ​​и имя набора гемов в вашем пути к Gem?Если нет, возможно, установка rvm не удалась.

4 голосов
/ 30 января 2012

Я не знаю, является ли это причиной вашей проблемы. Но у меня была похожая проблема. Причина была в том, что моя среда RVM была неправильной.

У меня было 2 пользователя, один из которых работал, а другой нет. Работающий пользователь использовал следующий пакетный скрипт. (вывод: из какого пакета)

/home/rvm/.rvm/gems/ruby-1.9.3-p0/bin/bundle

Используется неправильный пользователь rvm-установки:

/home/user/.rvm/bin/bundle

Причиной этого является неправильный порядок $ PATH. Путь .rvm / gems / ruby ​​-... / bin должен располагаться перед путем ./rvm/bin.

В моей ситуации причина была в том, что я установил для переменной $ PATH значение rvm другого пользователя. Я исправил проблему, добавив символическую ссылку на RVM пользователя и изменив свой путь с:

/home/rvm/.rvm/bin

до

/home/user/.rvm/bin

Если приведенный выше код не работает для вас, вы можете вручную настроить путь только ПОСЛЕ загрузки rvm.

4 голосов
/ 08 ноября 2012

Попробуйте: https://rvm.io/integration/gnome-terminal/

В нем говорится о профилях, запускаемых при запуске, я запускаю Ubuntu 12.10, и она работает.Единственное, что вам нужно сделать, это установить «Запустить команду как оболочку входа» в настройках профиля терминала (заголовок вкладки и команда).

Надеюсь, это сэкономит кому-то время.

3 голосов
/ 22 марта 2012

Это случилось и со мной после переключения на новый пустой набор гемов и запуска gem install bundler. Причина в том, что оболочка «запоминает» последний использованный вами bundle исполняемый файл. Чтобы исправить это (по крайней мере, у bash -продавцов):

hash -r
3 голосов
/ 31 октября 2012

После установки RVM на нескольких машинах с одинаковыми настройками и проблем с RVM на одной, но без проблем на другой, я решил поискать что-то лучшее, менее подверженное ошибкам.

Я нашел и переключился на rbenv , что намного проще, чем RVM.

А так как README состояний rbenv:

rbenv делает…

  • Позволяет изменять глобальную версию Ruby для каждого пользователя.
  • Обеспечивать поддержку версий Ruby для каждого проекта .
  • Позволяет переопределять версию Ruby с помощью переменной среды.

В отличие от rvm, rbenvне…

  • Требуется загрузка в вашу оболочку. Вместо этого подход shb rbenv работает путем добавления каталога в вашу переменную $ PATH.
  • Переопределение команд оболочки, таких как cd. Это опасно и подвержено ошибкам.
  • Есть файл конфигурации. Ничего не нужно настраивать, кроме какой версии Ruby вы хотите использовать.
  • Установите Ruby. Вы можете собрать и установить Ruby самостоятельно или использовать ruby-build для автоматизации процесса.
  • Управление наборами gem. Bundler - лучший способ управления зависимостями приложений.Если у вас есть проекты, которые еще не используют Bundler, вы можете установить плагин rbenv-gemset .
  • Требовать внесения изменений в библиотеки Ruby для совместимости. Простота rbenv означаетдо тех пор, пока он находится в вашем $ PATH, ничего больше не нужно знать об этом.
  • Запрашивать предупреждения при переключении на проект. Вместо выполнения произвольногокод, rbenv читает только название версии из каждого проекта.Нечего доверять.

Так что, если вы спросите меня, сбросьте RVM и переключитесь на rbenv.

3 голосов
/ 24 апреля 2012

Вы знаете, что это, очевидно, проблема вашей переменной PATH.

Вы должны убедиться, что which bundle будет похоже на /usr/local/rvm/gems/ruby-1.9.3-p194/bin/bundle вместо чего-то вроде /usr/local/rvm/bin/bundle.

подсказка:

Вы просто использовали PATH = какой-то явный список в своем файле .zshrc?

Тогда вам следует изменить его на PATH = $ PATH: некоторый список

...