I try to deploy my rails app with Nginx, passenger on Ubuntu 12.04 x32. after all things is done, I visit my rails app, but it tell me 'We're sorry, but something went wrong.'.
then I cat /var/log/nginx/error.log
, I find this lines:
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>'
I use rvm and 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)
and I hava already installed bundler
$ bundler -v
Bundler version 1.9.2
and here is my gem 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
have someone experienced same problem? thanks
update:
my /etc/nginx/nginx.conf
and /etc/nginx/sites-enabled/blog.conf
:
https://gist.github.com/wall2flower/b3f410317585a8803a27
https://gist.github.com/wall2flower/72316e8b437d654e7070
You sure have some PATH issues. Inside the /etc/nginx/nginx.conf
, for passenger, you should be pointing to the ruby version where bundler is installed.
passenger_root /usr/lib/ruby/vendor_ruby/phusion_passenger/locations.ini;
passenger_ruby /home/thomas/.rvm/wrappers/default/ruby;
You can check this with the command
$ which ruby
The output of that command should be the one you should enter for passenger_ruby
If you haven't installed bundler yet go ahead and run gem install bundler
Also make sure that you are setting the environment variable in your server block:
server {
listen 80 default;
server_name blog.wall2flower.me;
root /var/www/blog/current/public;
passenger_enabled on;
}
You need to genarate binstubs
to fix the problem:
bundle install --binstubs
try:
bundle exec passenger start ...
As karlingen notes, the issue is the result of PATH issues, however if you are using RVM, you will want to get your path to the correct ruby another way...
Best thing is to follow Passenger's own guide for finding this info:
https://www.phusionpassenger.com/library/config/nginx/reference/#setting_correct_passenger_ruby_value
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With