147 votes

Ne peut pas charger un tel fichier -- bundler/setup (LoadError)

Je configure une application Rails 4 avec Ruby 2.0, mais j'obtiens une erreur "L'application Web n'a pas pu démarrer" et j'obtiens cette trace :

cannot load such file -- bundler/setup (LoadError)
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/local/lib/ruby/site_ruby/2.0.0/rubygems/core_ext/kernel_require.rb:53:in `require'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/lib/phusion_passenger/loader_shared_helpers.rb:212:in `run_load_path_setup_code'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:96:in `preload_app'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:150:in `'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `

Mon apache2.conf est :

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/buildout/apache2/mod_passenger.so
   PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19
   PassengerDefaultRuby /usr/local/bin/ruby

bundle -v est :

Version de Bundler 1.3.5

ruby -v est :

ruby 2.0.0p247 (2013-06-27 révision 41674) [x86_64-linux]

gem env est :

Environnement RubyGems :
  - VERSION DE RUBYGEMS : 2.1.5
  - VERSION DE RUBY : 2.0.0 (2013-06-27 niveau de correctif 247) [x86_64-linux]
  - RÉPERTOIRE D’INSTALLATION : /usr/lib/ruby/gems/1.8
  - EXÉCUTABLE RUBY : /usr/local/bin/ruby
  - RÉPERTOIRE EXÉCUTABLE : /usr/lib/ruby/gems/1.8/bin
  - RÉPERTOIRE DE CACHE DE SPÉCIFICATIONS : /root/.gem/specs
  - PLATEFORMES RUBYGEMS :
    - ruby
    - x86_64-linux
  - CHEMINS DE GEMMES :
     - /usr/lib/ruby/gems/1.8
  - CONFIGURATION DE GEMMES :
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - SOURCES DISTANTES :
     - https://rubygems.org/
  - CHEMIN DE SHELL :
     - /root/.gems/bin
     - /usr/lib/ruby/gems/1.8/bin/
     - /usr/local/bin
     - /usr/bin
     - /bin
     - /usr/bin/X11
     - /usr/games
     - /usr/sbin
     - /sbin

echo $GEM_PATH est :

/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8

Ne devrait-il pas être /usr/lib/ruby/gems/2.0?

À l'intérieur de l'hôte virtuel dans apache2.conf, j'ai ajouté :

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

Et maintenant ça marche.

Est-ce la bonne façon de résoudre ce problème ?

226voto

Andrew Faulkner Points 2266

J'ai presque exactement la même erreur et j'ai pu la corriger complètement en exécutant simplement :

gem install bundler

Il est possible que votre installation de bundler soit corrompue ou manquante - c'est ce qui s'est passé dans mon cas. Notez que si la commande ci-dessus échoue, vous pouvez essayer :

sudo gem install bundler

...mais en général vous pouvez le faire sans sudo.

50voto

robmclarty Points 656

Il se pourrait qu'il y ait eu un environnement Ruby précédent installé sur votre système avant votre installation de la version 2.0 ? Cela pourrait avoir entraîné un GEM_PATH existant menant au répertoire /1.8 que l'installation de la version 2.0 a simplement conservé.

Le problème que vous aviez probablement alors, c'était que Passenger/Apache cherchait dans le répertoire /2.0 alors que les gems étaient en réalité dans le répertoire /1.8. Il est donc logique que vous indiquiez explicitement à apache d'utiliser le répertoire /1.8 pour résoudre le problème.

SetEnv GEM_HOME /usr/lib/ruby/gems/1.8

Vous pourriez également essayer d'utiliser le Ruby Version Manager pour gérer plusieurs environnements Ruby.

Quelques choses que j'ai trouvées sur Google :

30voto

Michael Guild Points 726

Vous avez probablement plus d'une installation Ruby.

Si vous utilisez RVM, vous devez probablement exécuter:

rvm use system

pour définir la version de Ruby à utiliser.

Voir http://rvm.io/rubies/default

ruby -v

vous dira la version que vous utilisez actuellement.

28voto

zolter Points 2188

Vous pouvez essayer d'exécuter :

bundle exec rake rails:update:bin

Comme mentionné par @Dinesh dans Rails 5 :

rails app:update:bin

10voto

user2997993 Points 121

Dans mon cas, les lignes ajoutées au fichier de configuration d'Apache après l'installation de Passenger étaient les suivantes :

LoadModule passenger_module /usr/lib/ruby/gems/1.8/gems/passenger-.0.24/buildout/apache2/mod_passenger.so 
PassengerRoot /usr/lib/ruby/gems/1.8/gems/passenger-4.0.24 
PassengerDefaultRuby /usr/bin/ruby1.8

Mais l'application nécessite Ruby 2.0.0, donc cela m'a pris un certain temps mais finalement, l'erreur a été résolue après avoir spécifié un chemin différent en utilisant 'PassengerRuby' ci-dessous, dans le fichier de configuration du virtual host Apache pour l'application :

...
VirtualHost *:80>
  ServerName www.votrehote.com

 **PassengerRuby /home/user/.rvm/gems/ruby-2.0.0-p247**
  # !!! Assurez-vous de pointer DocumentRoot vers 'public'!
  DocumentRoot /quelquepart/public    

     # Cela relaxe les paramètres de sécurité d'Apache.
     AllowOverride all
     # MultiViews doit être désactivé.
     Options -MultiViews

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