I have a Debian server, and when I start Passenger and go to the root directory of my application:
Error:
cannot load such file
Environment
deployment@currienet:/$ which ruby
/home/deployment/.rvm/rubies/ruby-1.9.3-p194/bin/ruby
deployment@currienet:/$ ruby --version
ruby 1.9.3p194 (2012-04-20 revision 35410) [i686-linux]
deployment@currienet:/$ which rails
/home/deployment/.rvm/gems/ruby-1.9.3-p194/bin/rails
deployment@currienet:/$ rails --version
Rails 3.2.8
deployment@currienet:/$ which bundle
/home/deployment/.rvm/gems/ruby-1.9.3-p194/bin/bundle
deployment@currienet:/$ gem list bundle
bundler (1.2.1)
deployment@currienet:/$ gem list passenger
passenger (3.0.17)
deployment@currienet:/$ which rvm
/home/deployment/.rvm/bin/rvm
deployment@currienet:/$ rvm --version
rvm 1.16.6 (master) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]
Apache eas.load file
LoadModule passenger_module /home/deployment/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17/ext/apache2/mod_passenger.so
PassengerRoot /home/deployment/.rvm/gems/ruby-1.9.3-p194/gems/passenger-3.0.17
PassengerRuby /usr/local/bin/ruby
Apache httpd.conf
<VirtualHost *:80>
ServerName http://currienet
DocumentRoot /var/www/currienet/marketplace/current/public
<Directory /var/www/currienet/marketplace/current/public >
Allow from all
Options -MultiViews
</Directory>
</VirtualHost>
Bundle
deployment@currienet:/var/www/currienet/marketplace/current$ bundle show
Gems included by the bundle:
* actionmailer (3.2.8)
* actionpack (3.2.8)
* activemodel (3.2.8)
* activerecord (3.2.8)
* activeresource (3.2.8)
* activesupport (3.2.8)
* arel (3.0.2)
* bcrypt-ruby (3.0.1)
* builder (3.0.0)
* bundler (1.2.1)
* cocaine (0.2.1)
* coffee-rails (3.2.2)
* coffee-script (2.2.0)
* coffee-script-source (1.3.3)
* daemon_controller (1.0.0)
* devise (2.1.2)
* erubis (2.7.0)
* execjs (1.4.0)
* fastthread (1.0.7)
* haml (3.1.7)
* haml-rails (0.3.4)
* hike (1.2.1)
* i18n (0.6.1)
* journey (1.0.4)
* jquery-rails (2.1.1)
* json (1.7.5)
* mail (2.4.4)
* mime-types (1.19)
* multi_json (1.3.6)
* orm_adapter (0.4.0)
* paperclip (3.1.2)
* passenger (3.0.17)
* pg (0.14.0)
* polyglot (0.3.3)
* rack (1.4.1)
* rack-cache (1.2)
* rack-ssl (1.3.2)
* rack-test (0.6.1)
* rails (3.2.8)
* railties (3.2.8)
* rake (0.9.2.2)
* rdoc (3.12)
* sass (3.2.1)
* sass-rails (3.2.5)
* sprockets (2.1.3)
* thor (0.16.0)
* tilt (1.3.3)
* treetop (1.4.10)
* tzinfo (0.3.33)
* uglifier (1.2.7)
* warden (1.2.1)
* will_paginate (3.0.3)
Accounts
I have two accounts on the server: root and deployment.
My application and rvm are installed for deployment, but Apache is installed as root (to bind to port 80). Judging by the list of processes, starting up ps -fe, the passenger is called apache and runs as root:
root 16159 16155 0 02:08 ? 00:00:00 PassengerWatchdog
root 16165 16159 0 02:08 ? 00:00:00 PassengerHelperAgent
root 16167 16165 0 02:08 ? 00:00:00 Passenger spawn server
nobody 16172 16159 0 02:08 ? 00:00:00 PassengerLoggingAgent
www-data 16179 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 16180 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 16181 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 16182 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start
www-data 16183 16155 0 02:08 ? 00:00:00 /usr/sbin/apache2 -k start
The root account does not have access to the rails or package in the root path.
.rvmrc and config / setup_load_paths.rb
" RVM " RVM :
.rvmrc :
rvm use 1.9.3 --rvmrc --create
.rvmrc:
if [[ -d "${rvm_path:-$HOME/.rvm}/environments"
&& -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]]
then
\. "${rvm_path:-$HOME/.rvm}/environments/$environment_id"
[[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &&
\. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true
if [[ $- == *i* ]]
then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)"
else echo "Using: $GEM_HOME"
fi
else
rvm --create use "$environment_id" || {
echo "Failed to create RVM environment '${environment_id}'."
return 1
}
fi
if [[ -s Gemfile ]] && {
! builtin command -v bundle >/dev/null ||
builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle >/dev/null
}
then
printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n"
gem install bundler
fi
if [[ -s Gemfile ]] && builtin command -v bundle >/dev/null
then
bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete'
fi
config/setup_load_paths.rb
if ENV['MY_RUBY_HOME'] && ENV['MY_RUBY_HOME'].include?('rvm')
begin
rvm_path = File.dirname(File.dirname(ENV['MY_RUBY_HOME']))
rvm_lib_path = File.join(rvm_path, 'lib')
$LOAD_PATH.unshift rvm_lib_path
require 'rvm'
RVM.use_from_path! File.dirname(File.dirname(__FILE__))
rescue LoadError
raise "RVM ruby lib is currently unavailable."
end
end
ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__))
require 'bundler/setup'
apache,
sudo /etc/init.d/apache2 restart
.
( ):
RVM : - - Apache.