Подтвердить что ты не робот

Bundler, не работающий с rbenv, не смог найти [gem]

Я только что переключил с rvm на rbenv, и я пытаюсь использовать bundler для управления драгоценными камнями. После запуска bundle install и попытки запуска простого приложения sinatra (ruby app.rb) я получаю следующее:

Could not find haml-3.1.4 in any of the sources
Run `bundle install` to install missing gems.

Запуск bundle install снова не повлиял. Также попробовал bundle update, как было предложено другим ответом на вопрос.

Это мой Gemfile:

source "http://rubygems.org"

gem "sinatra"
gem "haml"

Это то, что bundle show создает

* bundler (1.0.22)
* haml (3.1.4)
* rack (1.4.1)
* rack-protection (1.2.0)
* sinatra (1.3.2)
* tilt (1.3.3)

Это то, что требует мое приложение:

require "rubygems"
require "bundler/setup"
require 'sinatra'

Я убеждаю, что это какая-то проблема в пути, когда bundler и rbenv не играют. Я попытался просмотреть документацию rbenv, но не смог ничего найти.

Примечание. В другом приложении synatra я получаю следующее при попытке запустить его:

Could not find addressable-2.2.7 in any of the sources
Run `bundle install` to install missing gems.

Справочная информация

echo $PATH
/Users/uri/.rbenv/shims:/Users/uri/.rbenv/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/X11/bin

which bundle
/Users/uri/.rbenv/shims/bundle

Update

Если я выполняю bundle install --system, он работает. Хотя я не вижу, чтобы это было жизнеспособным решением.

4b9b3361

Ответ 1

У меня была такая же проблема. Один из намеков заключался в том, что rbenv exec bundle exec command работал и что rbenv exec bundle install --path vendor/bundle работал, но их ни один префиксный эквивалент не удался.

Я несколько раз стирал ~/.rbenv, ~/.gem Gemfile.lock и vendor/bundle несколько раз, пытаясь начать новый. Как только они были убраны, я попробовал следующее:

rbenv install 1.9.3-p194
rbenv rehash # for paranoia sake
rbenv global 1.9.3-p194
gem env # to check that everything was pointing at 1.9 and not the system
gem install --no-ri --no-rdoc bundler
rbenv rehash # necessary to load up the bundle executable
bundle --path=vendor/bundle

и это сработало!

Я думаю, что важно, поскольку я несколько раз пытался это сделать, это удалить файл .gem из вашего домашнего каталога. Кажется, он мешает.

Ответ 2

Запустили ли вы

rbenv rehash

Это предоставит прокладки для всех рубиновых двоичных файлов, включая те, которые установлены драгоценными камнями.

Ответ 4

Я предлагаю вам использовать драгоценный камень "capistrano-rbenv" (https://github.com/yyuu/capistrano-rbenv)

  • убедитесь, что у вас есть "rbenv" и рубиновая версия (например, 1.9.3), установленная на удаленном сервере

  • в файле config/deploy.rb(файл capistrano)

    require 'capistrano-rbenv'
    
  • в вашем Gemfile:

    gem 'capistrano-rbenv', '1.0.1'
    
  • что он. для отладки, если он работает, просто запустите:

    $ cap shell
    cap> which ruby
     ** [out :: 10.103.13.74] /root/.rbenv/shims/ruby
    cap> ruby -v
     ** [out :: 10.103.13.74] ruby 1.9.3p327 (2012-11-10 revision 37606) [x86_64-linux]
    

Ответ 5

Вам следует попробовать chruby. chruby - ультра-минимальная (~ 80 строк) альтернатива RVM/rbenv. В отличие от rbenv, chruby не полагается на прокладки и просто изменяет PATH, GEM_HOME и GEM_PATH.

Ответ 6

У меня была аналогичная проблема, когда я переключился с использования rvm на rbenv. Я обнаружил, что мой комплектщик показывает другой список драгоценных камней, чем моя команда gem list. Сначала проверьте, какие пути использует ваш комплектщик и драгоценный камень. Для связки используйте команду show и выберите любой драгоценный камень.

$ bundle show ffi
/my/project/path/vendor/ruby/1.9.1/gems/ffi-1.1.5

и моя команда gem environment (частично)

$ gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.8.23
  - RUBY VERSION: 1.9.2 (2011-07-09 patchlevel 290) [x86_64-darwin10.8.0]
  - INSTALLATION DIRECTORY: /Users/rolf/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1

Здесь я мог видеть, что мой драгоценный камень указывает на правильный путь rbenv, но мой связной указывает на мой путь поставщика проекта.

Запуск следующей команды должен устранить проблему с путником:

$ bundle install --system

Путь Bundler должен теперь указывать на путь rbenv.

$ bundle show ffi
/Users/rolf/.rbenv/versions/1.9.2-p290/lib/ruby/gems/1.9.1/gems/ffi-1.1.5

Также, когда я запустил команду rvm implode для удаления rvm, все еще были файлы, которые мне нужно было изменить, чтобы удалить пути rvm:

~/.profile
~/.bashrc
~/.zshrc

Если путь ~/.rvm все еще существует, вам нужно удалить это.

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

Ответ 7

Просто напоминание, что rbenv не совместим с rvm, они не играют хорошо. Для вашего удобства удалите rvm, если вы хотите использовать rbenv. Из rbenv README:

Замечание о совместимости: rbenv несовместимо с rvm. Появятся вещи работать до тех пор, пока вы не попытаетесь установить драгоценный камень. Проблема в том, что rvm фактически переопределяет команду gem с помощью функции оболочки! пожалуйста удалите любые ссылки на rvm перед использованием rbenv.

К счастью, Wayne (создатель rvm) обеспечивает удаление rvm с помощью:

rvm implode

Как регулярное использование или:

rvmsudo rvm implode

Очистить систему rvm.

Ответ 8

Я пробовал все это здесь, но для меня это обнаружило, что у меня в моем домашнем каталоге пользователя был какой-то .bundler. Это вызывало странную проблему выше, где команда "which" правильно перечисляет пучок в пути прокладки, но проверка пакета -v показала старую версию системы, а /Users/jerimiah/.rbenv/shims/bundle - последние версии. Я удалил .bundler в своем домашнем каталоге, перезаписал, перезапустил мой терминал, и все начало работать.

Ответ 9

Дайте этому плагину rbenv попробовать, он сделает прокладки осведомленными о путях связки

https://github.com/carsomyr/rbenv-bundler