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?
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:
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.
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.
vous pouvez essayer d'exécuter:
bundle exec rake rails:update:bin
comme @Dinesh mentionné dans les Rails 5:
rails app:update:bin
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...
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.
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.
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/
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;
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.