rubygems - que - cannot load such file-- bundler/setup(loaderror)
no se puede cargar dicho archivo-bundler/setup(LoadError) (9)
Estoy configurando la aplicación Rails 4 con Ruby 2.0, pero estoy obteniendo "No se pudo iniciar la aplicación web" y obtengo esta traza:
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>''
Mi apache2.conf es:
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
es:
Bundler version 1.3.5
ruby -v
es:
ruby 2.0.0p247 (2013-06-27 revision 41674) [x86_64-linux]
gem env
es:
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
es:
/usr/lib/ruby/gems/1.8:/usr/lib/ruby/gems/1.8
¿No debería GEM_PATH
ser GEM_PATH
?
Dentro del host virtual en apache2.conf agregué:
SetEnv GEM_HOME /usr/lib/ruby/gems/1.8
Y ahora está funcionando.
¿Es la forma correcta de arreglar esto?
¿Podría ser que hubiera un env anterior de Ruby instalado en su sistema antes de su instalación de 2.0? Esto podría haber tenido una GEM_PATH existente que condujo al directorio /1.8 que simplemente se mantuvo la instalación de la versión 2.0.
El problema que probablemente tendrías, entonces, era que Passenger / Apache estaba buscando en el directorio /2.0 cuando de hecho las gemas estaban en el directorio /1.8. Le dice explícitamente a apache que use el directorio /1.8 para solucionar el problema.
SetEnv GEM_HOME /usr/lib/ruby/gems/1.8
También puede intentar usar el Ruby Version Manager para manejar múltiples envs de Ruby.
Algunas cosas que encontré en Google:
Casi tuve exactamente el mismo error, y pude solucionarlo por completo simplemente ejecutando:
gem install bundler
Es posible que la instalación de su paquete esté dañada o faltante, eso es lo que sucedió en mi caso. Tenga en cuenta que si falla lo anterior, puede intentar:
sudo gem install bundler
... pero generalmente puedes hacerlo sin sudo.
En mi caso, las líneas adjuntas al archivo de configuración de Apache después de instalar el pasajero fueron las siguientes:
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
Pero la aplicación requiere Ruby 2.0.0, así que tardé un tiempo, pero finalmente, el error se resolvió después de especificar una ruta diferente utilizando ''PassengerRuby'' a continuación, dentro del archivo de configuración de host virtual de Apache para la aplicación:
...
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...
Es muy probable que tenga más de un Ruby instalado.
Si está utilizando RVM, probablemente necesite ejecutar:
rvm use system
para configurar la versión de ruby a usar
Ver http://rvm.io/rubies/default
ruby -v
le dirá la versión que está usando actualmente.
NOTA: Mi empresa de hosting es Site5.com y tengo un VPS administrado.
Agregué variables env para GEM_HOME y GEM_PATH para el archivo .htaccess en mi directorio public_html (un alias para el directorio público en la aplicación rails)
No fueron necesarios antes, así que algo debe haber cambiado en el lado de los anfitriones. Obtuvo este error después de tocar el archivo restart.txt para reiniciar el servidor de pasajeros.
Tengo GEM_PATH por:
echo $ GEM_PATH
Obtuve GEM_HOME por:
gema 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/
Archivo .htaccess actualizado con las siguientes líneas:
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/
Para mí, el problema fue asociar RVM Ruby con Passenger. Así que necesitaba integrar el ruby wrapper de RVM al archivo de configuración de pasajeros.
Descubro la ruta de Ruby wrapper de rvm con el comando:
passenger-config --ruby-command
Tomé el camino del resultado e ingresé a una configuración de pasajero en 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;
Puedes intentar ejecutar:
bundle exec rake rails:update:bin
Como @Dinesh mencionó en Rails 5:
rails app:update:bin
Recibí este error en una nueva aplicación de Rails con el paquete correctamente instalado. Comentando la gema de primavera en Gemfile resolvió el problema.
Tuve esto porque algo malo estaba en mi vendor/bundle
. Nada que ver con Apache, solo en env env local.
Para solucionarlo, eliminé vendor/bundle
, y también borré la referencia en mi .bundle/config
para que no se vuelva a utilizar.
Luego, volví a GEM_HOME
(que luego se instaló en GEM_HOME
lugar de vendor/bundle
y el problema desapareció).