Пакет не работает с rbenv

Я пытаюсь использовать bundler с rbenv. Я работаю до сегодняшнего дня. Единственное, что я мог сделать, чтобы сломать это, было gem pristine --all или gem cleanup? При попытке установить bundler я получаю следующую ошибку.

Antarrs-MacBook-Pro:some-app antarrbyrd$ sudo gem install bundler
Password:
Bundler gave the error "Could not find mail-2.5.4 in any of the sources" while processing "/Users/antarrbyrd/dev/some-app/Gemfile". Perhaps you forgot to run "bundle install"?
Successfully installed bundler-1.7.12
Parsing documentation for bundler-1.7.12
Done installing documentation for bundler after 3 seconds
1 gem installed
Antarrs-MacBook-Pro:some-app antarrbyrd$ bundle install
/Users/antarrbyrd/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'bundler' (>= 0) among 8 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/antarrbyrd/.gem', execute `gem env` for more information
    from /Users/antarrbyrd/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency.rb:324:in `to_spec'
    from /Users/antarrbyrd/.rbenv/versions/2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
    from /usr/local/bin/bundle:22:in `<main>'

когда я делаю rbenv rehash или rbenv bundler on, он получает эту ошибку

Bundler gave the error "Could not find mail-2.5.4 in any of the sources" while processing "/Users/antarrbyrd/dev/some-app/Gemfile". Perhaps you forgot to run "bundle install"?

~/.bash_profile

export BUNDLER_EDITOR=atom
export PATH=$PATH:/usr/local/opt/android-sdk/build-tools/21.1.2
export HOMEBREW_GITHUB_API_TOKEN=...

export ANDROID_HOME=/usr/local/opt/android-sdk
export PATH="$HOME/.rbenv/bin:$PATH"
if which rbenv > /dev/null; then eval "$(rbenv init -)"; fi

# Allow local Gem Managment 
# export GEM_HOME="$HOME/.gem"
# export GEM_PATH="$HOME/.gem"
# export PATH="$HOME/.gem/bin:$PATH"

gem env

RubyGems Environment:
  - RUBYGEMS VERSION: 2.2.2
  - RUBY VERSION: 2.1.2 (2014-05-08 patchlevel 95) [x86_64-darwin14.0]
  - INSTALLATION DIRECTORY: /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
  - RUBY EXECUTABLE: /usr/local/var/rbenv/versions/2.1.2/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/local/var/rbenv/versions/2.1.2/bin
  - SPEC CACHE DIRECTORY: /Users/antarrbyrd/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-darwin-14
  - GEM PATHS:
     - /usr/local/var/rbenv/versions/2.1.2/lib/ruby/gems/2.1.0
     - /Users/antarrbyrd/.gem/ruby/2.1.0
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => false
     - :backtrace => false
     - :bulk_threshold => 1000
     - "gem" => "-n/usr/local/bin"
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /usr/local/var/rbenv/versions/2.1.2/bin
     - /usr/local/Cellar/rbenv/0.4.0/libexec
     - /Users/antarrbyrd/.gem/bin
     - /usr/local/var/rbenv/shims
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/sbin
     - /sbin
     - /usr/local/var/rbenv/shims
     - /Users/antarrbyrd/.rbenv/bin
     - /Users/antarrbyrd/.rbenv/shims
     - /Users/antarrbyrd/.gem/bin
     - /usr/local/opt/android-sdk/build-tools/21.1.2

Обновление

Я переустановил rbenv через brew, и теперь я получаю следующую ошибку при запуске установки пакета.

The `bundle' command exists in these Ruby versions:
  2.1.5

ответ на Joel

Antarrs-MacBook-Pro:myapp antarrbyrd$ command -v ruby
/usr/local/var/rbenv/shims/ruby
Antarrs-MacBook-Pro:myapp antarrbyrd$ command -v bundle
/usr/local/bin/bundle
Antarrs-MacBook-Pro:myapp antarrbyrd$ ruby -v
ruby 2.1.2p95 (2014-05-08 revision 45877) [x86_64-darwin14.0]
Antarrs-MacBook-Pro:myapp antarrbyrd$ bundle -v
Bundler version 1.7.12
Antarrs-MacBook-Pro:myapp antarrbyrd$ 

Ответы

Ответ 1

Ваша установка попадает в цикл.

Перейдите в каталог, который не является вашим приложением, и у которого нет Gemfile.

Затем сделайте обычный gem install bundle (и используйте sudo, если вам это нужно)

Затем перейдите в каталог приложений и выполните обычный bundle install.

Решает ли ваша проблема?

Если вам нужна дополнительная помощь, можете запустить эти команды, а затем вставить результаты в свой вопрос?

 $ command -v ruby
 $ command -v bundle
 $ ruby -v
 $ bundle -v

Ищите любое несоответствие между результатами и тем, что вы ожидаете. Это поможет вам отследить, что происходит. Возможно, вам потребуется обновить версию Gemfile Ruby.

(Также вы можете рассмотреть возможность перехода от rbenv в chruby, потому что это лучше ИМХО с такими проблемами пути)

Ответ 2

Я получил:

rbenv: bundle: command not found

The `bundle' command exists in these Ruby versions:
  2.3.0

после обновления до Ruby 2.3.1

и он решил:

gem install rails

из рабочей папки

Ответ 3

gem install bundler

Вам необходимо переустановить упаковщик для каждой версии Ruby, которую вы используете.

Ссылка: выпуск github

Ответ 4

Попробуйте использовать:

бен/расслоение

вместо

расслоение

Ответ 5

Вот что сработало для меня с унаследованным проектом:

  • Установите правильную версию ruby ​​через rbenv

    $ cd YOUR_PROJECT_DIRECTORY
    $ rbenv install 2.1.0
    $ rbenv local 2.1.0
  1. Если вы все еще получаете сообщение об ошибке при установке пакета, найдите предупреждение PATH:

    $ gem install bundle
    WARNING:  You don't have /Users/lex/.gem/ruby/2.1.0/bin in your PATH,
          gem executables will not run.
    Successfully installed bundle-0.0.1
    1 gem installed
  1. Обновите свой PATH:

    $ PATH=/Users/lex/.gem/ruby/2.1.0/bin:$PATH
  1. Повторите попытку:

    $ bundle install
    Fetching: bundler-1.11.2.gem (100%)
    HTTP GET https://bundler.rubygems.org/api/v1/dependencies
    HTTP 200 OK
    Fetching gem metadata from https://rubygems.org/
    . . .

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

Ответ 6

Попробуйте настроить рубин глобально

rbenv global 2.3.1

Ответ 7

Если ни одно из других решений не работает для вас, попробуйте это.

По какой-то причине я не смог установить bundler на определенные версии ruby, поэтому переустановка bundler ничего не сделала для меня.

Однако я заметил, как rbenv whence bundle указывает, что bundle был активен в некоторых версиях ruby, но не в других. Если вы посмотрите путь к самоцвету без компоновщика (для меня это был ~/.rbenv/versions/2.5.1/bin/), вы заметите, что его там нет. Однако, в других версиях, которые могут распознать, вы увидите, что исполняемый файл есть (для меня он был там в ~/.rbenv/versions/2.3.1/bin/bundle).

Просто скопируйте исполняемый файл с рабочей версии ruby на ту, которая повреждена. Затем в верхней части файла вы увидите, что sha-bang настроен на другую версию ruby (для меня это была #!/Users/myuser/.rbenv/versions/2.3.1/bin/ruby). Измените путь к версии ruby, которую вы хотите исправить, и тогда все волшебным образом начнет работать.

Ответ 8

У меня сегодня похожая проблема. Моя проблема была исправлена следующим образом:

system dependencies
- rvenv
- ruby 2.5.0
- rails 5.1.6
проверьте версию пакета в Gemfile.lock
BUNDLED WITH
  1.17.3
установите конкретную версию пакета
$ gem install bundler -v 1.17.3
Fetching bundler-1.17.3.gem
Successfully installed bundler-1.17.3
Parsing documentation for bundler-1.17.3
Done installing documentation for bundler after 3 seconds
1 gem installed

Надеюсь, это кому-нибудь поможет.

Ответ 9

У меня была аналогичная проблема с Guard с Форман. Моя первоначальная команда для запуска:

bundle exec foreman run guard -c

Это дало мне следующие ошибки:

11:07:52 - INFO - Run all
11:07:52 - INFO - Running all specs
/Users/MyUser/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/dependency.rb:315:in `to_specs': Could not find 'bundler' (>= 0) among 146 total gem(s) (Gem::LoadError)
Checked in 'GEM_PATH=/Users/MyUser/devel/o2/vesta/vendor/bundle/ruby/2.2.0', execute `gem env` for more information
        from /Users/MyUser/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/dependency.rb:324:in `to_spec'
        from /Users/MyUser/.rbenv/versions/2.2.0/lib/ruby/2.2.0/rubygems/core_ext/kernel_gem.rb:64:in `gem'
        from /Users/MyUser/.rbenv/versions/2.2.0/bin/bundle:22:in `<main>'

Простым решением было не использовать bundle exec с мастером, а использовать его против охраны. например.

foreman run bundle exec guard -c

Надеюсь, что это поможет.