47 votes

Bundler ne fonctionne pas avec rbenv, impossible de trouver [gem]

Je viens de faire le passage de rvm pour rbenv et je suis en train de bundler pour gem de gestion. Après l'exécution de l' bundle install et en essayant de lancer un simple sinatra app (ruby app.rb), j'obtiens ceci:

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

L'exécution bundle install de nouveau eu aucun effet. Aussi tenté bundle update comme le suggère une autre question réponse.

C'est mon Gemfile:

source "http://rubygems.org"

gem "sinatra"
gem "haml"

C'est ce qu' bundle show produit

* 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)

C'est ce que mon application nécessite:

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

Je suis à la convaincre que c'est une sorte de problème de chemin d'accès où bundler et de rbenv ne sont pas en jouant en même temps. J'ai essayé de regarder à travers rbenv de la documentation, mais n'a pas été en mesure de trouver quoi que ce soit.

Remarque: Dans un autre sinatra application je reçois le texte suivant lorsque vous essayez de l'exécuter:

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

Info supplémentaire

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

which bundle /Utilisateurs/ugorelik/.rbenv/cales/bundle

Mise à jour

Si je n' bundle install --system il fonctionne. Bien que je ne peux pas voir cela comme une solution viable.

105voto

kweerious Points 846

J'ai eu le même problème. Un soupçon est que le rbenv exec bundle exec command a fonctionné et qu' rbenv exec bundle install --path vendor/bundle travaillé, mais leur aucun préfixe équivalents échoué.

J'ai essuyé mes ~/.rbenv, ~/.gem Gemfile.lock et vendor/bundle quelques fois d'essayer de commencer à frais. Une fois que ces ont été nettoyé, j'ai essayé le suivant:

rbenv install 1.9.3-p194
rbenv rehash # for paranoia's 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

et cela a fonctionné!

Je pense que la chose la plus importante, depuis que j'ai essayé à quelques reprises, est de supprimer l' .gem fichier à partir de votre répertoire d'accueil. Il semble pour obtenir de la manière.

23voto

Ben Woodall Points 689

As-tu couru

 rbenv rehash
 

Cela fournira des cales pour tous les binaires ruby, y compris ceux installés par des gemmes.

20voto

Fedor Könukhov Points 191

Ajout de cette

 set :default_environment, {
  'PATH' => "$HOME/.rbenv/shims:$HOME/.rbenv/bin:$PATH"
}
 

déployer.rb a fonctionné pour moi.

http://henriksjokvist.net/archive/2012/2/deploying-with-rbenv-and-capistrano/

6voto

Siwei Shen Points 5814

Je vous suggère d'utiliser la gem 'capistrano-rbenv' (https://github.com/yyuu/capistrano-rbenv )

  1. assurez-vous que vous avez "rbenv" et une version de ruby (par exemple 1.9.3) installé dans le serveur distant

  2. dans votre config/deploy.rb (capistrano fichier)

    require 'capistrano-rbenv'
    
  3. dans votre Gemfile:

    gem 'capistrano-rbenv', '1.0.1'
    
  4. c'est tout. pour déboguer si cela fonctionne, il suffit d'exécuter:

    $ 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]
    

2voto

Postmodern Points 346

Vous devriez essayer d'utiliser chruby . chruby est une alternative ultra-minimale (~ 80 lignes) à RVM / rbenv. Contrairement à rbenv, chruby ne s'appuie pas sur des cales et modifie simplement PATH , GEM_HOME et GEM_PATH .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X