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

je mets rail 4 application avec Ruby 2.0, mais je reçois "application Web ne pouvait pas être commencé" et obtenir 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 `<module:App>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
  /usr/lib/ruby/gems/1.8/gems/passenger-4.0.19/helper-scripts/rack-preloader.rb:28:in `<main>'

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:

Bundler version 1.3.5

ruby -v est:

ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]

gem env est:

RubyGems Environment:
  - RUBYGEMS VERSION: 2.1.5
  - RUBY VERSION: 2.0.0 (2013-06-27 patchlevel 247) [x86_64-linux]
  - INSTALLATION DIRECTORY: /usr/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: /usr/local/bin/ruby
  - EXECUTABLE DIRECTORY: /usr/lib/ruby/gems/1.8/bin
  - SPEC CACHE DIRECTORY: /root/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /usr/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /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

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

à l'Intérieur de l'hôte virtuel dans apache2.conf i a ajouté:

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

et maintenant ça marche.

est-ce la bonne façon d'arranger ça?

101
demandé sur the Tin Man 2013-09-28 03:57:09

10 réponses

Il se pourrait qu'il y avait un précédent Ruby env installé sur votre système avant l'installation de 2.0? Cela aurait pu avoir un GEM_PATH existant qui conduirait au répertoire / 1.8 que l'installation de la version 2.0 gardait simplement.

le problème que vous avez probablement, alors, était que le passager / Apache regardait dans le répertoire /2.0 alors qu'en fait les gemmes étaient dans le répertoire /1.8. Le fait de dire explicitement à apache d'utiliser le répertoire /1.8 fait sens pour résoudre le problème.

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

vous pouvez également essayer d'utiliser le Ruby Version Manager pour gérer plusieurs Ruby envs.

certaines choses que j'ai trouvées dans Google:

43
répondu robmclarty 2017-05-23 12:26:27

j'ai eu presque exactement la même erreur, et j'ai pu la corriger complètement simplement en tournant:

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 ce qui précède échoue, vous pouvez essayer:

sudo gem install bundler

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

147
répondu Andrew Faulkner 2016-07-04 17:42:21

Vous avez probablement plus d'un Rubis installé.

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.

24
répondu Michael Guild 2015-11-18 20:14:52

vous pouvez essayer d'exécuter:

bundle exec rake rails:update:bin

comme @Dinesh mentionné dans les Rails 5:

rails app:update:bin
19
répondu zolter 2016-08-10 11:28:16

dans mon cas, les lignes annexées au fichier de configuration 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 de l'hôte virtuel Apache pour l'application:

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

 **PassengerRuby /home/user/.rvm/gems/ruby-2.0.0-p247**
  # !!! Be sure to point DocumentRoot to 'public'!
  DocumentRoot /somewhere/public    
  <Directory /somewhere/public>
     # This relaxes Apache security settings.
     AllowOverride all
     # MultiViews must be turned off.
     Options -MultiViews
  </Directory>
</VirtualHost...
9
répondu user2997993 2015-11-18 20:13:32

j'ai eu cette erreur dans un nouveau Rails app avec bundle correctement installé. En commentant la gemme de printemps dans Gemfile résolu le problème.

7
répondu nachbar 2015-02-21 06:44:51

j'ai eu ça parce que quelque chose de mauvais était dans mon vendor/bundle . Rien à voir avec Apache, juste dans le dev env local.

pour corriger, j'ai supprimé vendor\bundle , et aussi supprimé la référence à celui-ci dans mon .bundle/config pour qu'il ne soit pas réutilisé.

puis, j'ai re-empaqueté (qui s'est ensuite installé à GEM_HOME au lieu de vendor/bundle et le problème a disparu.

0
répondu thewoolleyman 2016-02-25 05:39:34

NOTE: ma société d'hébergement est Site5.com et j'ai un VPS managé.

j'ai ajouté des variables env pour GEM_HOME et GEM_PATH à la .htaccess dans mon répertoire public_html (un alias vers le répertoire public dans l'application rails)

ils n'étaient pas nécessaires avant donc quelque chose a dû changer du côté des hôtes. Il a eu cette erreur après avoir touché le redémarrage.fichier txt pour redémarrer le passager serveur.

a Obtenu GEM_PATH by:

echo $GEM_PATH

a Obtenu la GEM_HOME par:

gem env

 RubyGems Environment:
   - RUBYGEMS VERSION: 2.0.14
   - RUBY VERSION: 2.0.0 (2013-11-22 patchlevel 353) [x86_64-linux]
   - INSTALLATION DIRECTORY: /home/username/ruby/gems
   - RUBY EXECUTABLE: /usr/local/ruby20/bin/ruby
   - EXECUTABLE DIRECTORY: /home/username/ruby/gems/bin
   - RUBYGEMS PLATFORMS:
     - ruby
     - x86_64-linux
   - GEM PATHS:
      - /home/username/ruby/gems
      - /usr/local/ruby2.0/lib64/ruby/gems/
   - GEM CONFIGURATION:
      - :update_sources => true
      - :verbose => true
      - :backtrace => false
      - :bulk_threshold => 1000
      - "gem" => "--remote --gen-rdoc --run-tests"
      **- "gemhome" => "/home/username/ruby/gems"**
      - "gempath" => ["/home/username/ruby/gems", "/usr/local/ruby2.0/lib64/ruby/gems/"]
      - "rdoc" => "--inline-source --line-numbers"
   - REMOTE SOURCES:
      - https://rubygems.org/

mis à Jour .fichier htaccess avec les lignes suivantes:

SetEnv GEM_HOME /usr/local/ruby2.0/lib64/ruby/gems/
SetEnv GEM_PATH /home/username/ruby/gems:/usr/local/ruby20/lib64/ruby/gems/:/home/username/ruby/gems:/usr/
0
répondu Rob Little 2017-02-16 03:30:30

pour moi, le problème était d'associer RVM Ruby avec Passenger. J'ai donc dû intégrer RVM Ruby wrapper au fichier de configuration des passagers.

- je trouver rvm ruby wrapper chemin d'accès avec la commande:

passenger-config --ruby-command

j'ai pris le chemin à partir du résultat et je suis entré dans un fichier passager dans nginx/passenger.conf :

passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /usr/local/rvm/gems/ruby-2.3.1/wrappers/ruby;
0
répondu Gediminas 2017-03-25 14:28:55

j'ai rencontré le MÊME PROBLÈME, MAIS je pense que c'était dû à spring cache quelques gemmes et configurations. Je l'ai corrigé en lançant gem pristine --all .

cela rétablit les gemmes installées à l'état intact à partir des fichiers situés dans le cache gem.

0
répondu NM Pennypacker 2018-06-11 12:04:27