J'essaie de déployer mon application Rails avec Nginx, passager sous Ubuntu 12.04 x32. Une fois que tout est terminé, je visite mon application Rails, mais elle me dit "Nous sommes désolés, mais quelque chose s'est mal passé".
alors je cat /var/log/nginx/error.log
, je trouve ces lignes:
Message from application: cannot load such file -- bundler/setup (LoadError)
/home/thomas/.rvm/rubies/Ruby-2.0.0- p643/lib/Ruby/site_Ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/home/thomas/.rvm/rubies/Ruby-2.0.0-p643/lib/Ruby/site_Ruby/2.0.0/rubygems/core_ext/kernel_require.rb:54:in `require'
/usr/lib/Ruby/vendor_Ruby/phusion_passenger/loader_shared_helpers.rb:278:in `block in run_load_path_setup_code'
/usr/lib/Ruby/vendor_Ruby/phusion_passenger/loader_shared_helpers.rb:381:in `running_bundler'
/usr/lib/Ruby/vendor_Ruby/phusion_passenger/loader_shared_helpers.rb:276:in `run_load_path_setup_code'
/usr/share/passenger/helper-scripts/rack-preloader.rb:99:in `preload_app'
/usr/share/passenger/helper-scripts/rack-preloader.rb:157:in `<module:App>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:29:in `<module:PhusionPassenger>'
/usr/share/passenger/helper-scripts/rack-preloader.rb:28:in `<main>'
J'utilise rvm et rbenv
$ Ruby -v
Ruby 2.0.0p643 (2015-02-25 revision 49749) [i686-linux]
$ rbenv versions
system
* 2.0.0-p643 (set by /home/thomas/.rbenv/version)
et je hava déjà bundler installé
$ bundler -v
Bundler version 1.9.2
et voici mon joyau env:
RubyGems Environment:
- RUBYGEMS VERSION: 2.4.6
- Ruby VERSION: 2.0.0 (2015-02-25 patchlevel 643) [i686-linux]
- INSTALLATION DIRECTORY: /home/thomas/.rvm/gems/Ruby-2.0.0-p643
- Ruby EXECUTABLE: /home/thomas/.rvm/rubies/Ruby-2.0.0-p643/bin/Ruby
- EXECUTABLE DIRECTORY: /home/thomas/.rvm/gems/Ruby-2.0.0-p643/bin
- SPEC CACHE DIRECTORY: /home/thomas/.gem/specs
- SYSTEM CONFIGURATION DIRECTORY: /home/thomas/.rvm/rubies/Ruby-2.0.0-p643/etc
- RUBYGEMS PLATFORMS:
- Ruby
- x86-linux
- GEM PATHS:
- /home/thomas/.rvm/gems/Ruby-2.0.0-p643
- /home/thomas/.rvm/gems/Ruby-2.0.0-p643@global
- GEM CONFIGURATION:
- :update_sources => true
- :verbose => true
- :backtrace => false
- :bulk_threshold => 1000
- REMOTE SOURCES:
- https://rubygems.org/
- Shell PATH:
- /home/thomas/.rvm/gems/Ruby-2.0.0-p643/bin
- /home/thomas/.rvm/gems/Ruby-2.0.0-p643@global/bin
- /home/thomas/.rvm/rubies/Ruby-2.0.0-p643/bin
- /home/thomas/.rvm/bin
- /home/thomas/.rbenv/bin
- /home/thomas/.rbenv/shims
- /home/thomas/.rbenv/bin
- /usr/local/sbin
- /usr/local/bin
- /usr/sbin
- /usr/bin
- /sbin
- /bin
- /usr/games
quelqu'un a-t-il rencontré le même problème? merci
mise à jour: mon /etc/nginx/nginx.conf
et /etc/nginx/sites-enabled/blog.conf
: https://Gist.github.com/wall2flower/b3f410317585a8803a27https://Gist.github.com/wall2flower/72316e8b437d654e7070
Vous avez sûrement des problèmes avec PATH. À l'intérieur du /etc/nginx/nginx.conf
, passager, vous devriez indiquer la version de Ruby où le bundler est installé.
passenger_root /usr/lib/Ruby/vendor_Ruby/phusion_passenger/locations.ini;
passenger_Ruby /home/thomas/.rvm/wrappers/default/Ruby;
Vous pouvez vérifier cela avec la commande
$ which Ruby
Le résultat de cette commande devrait être celui que vous devriez entrer pour passenger_Ruby
Si vous n'avez pas encore installé le bundler, lancez gem install bundler
Assurez-vous également que vous définissez la variable d'environnement dans votre bloc serveur:
server {
listen 80 default;
server_name blog.wall2flower.me;
root /var/www/blog/current/public;
passenger_enabled on;
}
Vous devez générer binstubs
pour résoudre le problème:
bundle install --binstubs
Comme le note Karlingen, le problème est le résultat de problèmes PATH. Cependant, si vous utilisez RVM, vous voudrez obtenir votre chemin vers le Ruby correct d'une autre manière ...
La meilleure chose à faire est de suivre le guide du passager pour trouver cette information:
http://www.phusionpassenger.com/library/config/nginx/reference/#setting_correct_passenger_Ruby_value
essayer:
bundle exec passenger start ...