Note that there are some explanatory texts on larger screens.

plurals
  1. POPassenger RVM Error: cannot load such file -- bundler/setup
    text
    copied!<p>I have a Debian server and when I try and run Passenger and navigate to the root directory of my app:</p> <h3>Error:</h3> <pre><code>cannot load such file -- bundler/setup </code></pre> <h3>Environment</h3> <pre><code>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 &lt;wayneeseguin@gmail.com&gt;, Michal Papis &lt;mpapis@gmail.com&gt; [https://rvm.io/] </code></pre> <h3>Apache's passenger.load file</h3> <pre><code>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 </code></pre> <h3>Apache's httpd.conf</h3> <pre><code>&lt;VirtualHost *:80&gt; ServerName http://currienet # !!! Be sure to point DocumentRoot to 'public'! DocumentRoot /var/www/currienet/marketplace/current/public &lt;Directory /var/www/currienet/marketplace/current/public &gt; # This relaxes Apache security settings. Allow from all Options -MultiViews &lt;/Directory&gt; &lt;/VirtualHost&gt; </code></pre> <h3>Bundle</h3> <pre><code>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) </code></pre> <h2>Accounts</h2> <p>I have two accounts on the server: root and deployment.</p> <p>My app and rvm are installed under deployment but Apache is installed under root (to be able to bind to port 80) Judging by the process list by running <code>ps -fe</code> passenger is being called by apache and is run under root:</p> <pre><code>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 </code></pre> <p>The root account doesn't have access to rails or bundle in the root path.</p> <h1>.rvmrc &amp; config/setup_load_paths.rb</h1> <p>I have tried following the instructions on the <a href="http://blog.ninjahideout.com/posts/the-path-to-better-rvm-and-passenger-integration" rel="nofollow noreferrer">The Path to Better RVM &amp; Passenger Integration Blog</a> and <a href="https://rvm.io/integration/passenger/" rel="nofollow noreferrer">Using RVM rubies with Passenger </a>: </p> <p>Create an .rvmrc file in the root directory of my app with the command:</p> <pre><code>rvm use 1.9.3 --rvmrc --create </code></pre> <p>Which generates the file .rvmrc:</p> <pre><code>if [[ -d "${rvm_path:-$HOME/.rvm}/environments" &amp;&amp; -s "${rvm_path:-$HOME/.rvm}/environments/$environment_id" ]] then \. "${rvm_path:-$HOME/.rvm}/environments/$environment_id" [[ -s "${rvm_path:-$HOME/.rvm}/hooks/after_use" ]] &amp;&amp; \. "${rvm_path:-$HOME/.rvm}/hooks/after_use" || true if [[ $- == *i* ]] # check for interactive shells then echo "Using: $(tput setaf 2)$GEM_HOME$(tput sgr0)" # show the user the ruby and gemset they are using in green else echo "Using: $GEM_HOME" # don't use colors in non-interactive shells fi else # If the environment file has not yet been created, use the RVM CLI to select. rvm --create use "$environment_id" || { echo "Failed to create RVM environment '${environment_id}'." return 1 } fi # If you use bundler, this might be useful to you: if [[ -s Gemfile ]] &amp;&amp; { ! builtin command -v bundle &gt;/dev/null || builtin command -v bundle | GREP_OPTIONS= \grep $rvm_path/bin/bundle &gt;/dev/null } then printf "%b" "The rubygem 'bundler' is not installed. Installing it now.\n" gem install bundler fi if [[ -s Gemfile ]] &amp;&amp; builtin command -v bundle &gt;/dev/null then bundle install | GREP_OPTIONS= \grep -vE '^Using|Your bundle is complete' fi </code></pre> <p>And adding the following to config/setup_load_paths.rb</p> <pre><code>if ENV['MY_RUBY_HOME'] &amp;&amp; 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 # RVM is unavailable at this point. raise "RVM ruby lib is currently unavailable." end end # Select the correct item for which you use below. # If you're not using bundler, remove it completely. # If we're using a Bundler 1.0 beta ENV['BUNDLE_GEMFILE'] = File.expand_path('../Gemfile', File.dirname(__FILE__)) require 'bundler/setup' </code></pre> <p>And started apache by running</p> <pre><code>sudo /etc/init.d/apache2 restart </code></pre> <p>I still get the same error.</p> <h2>Unhelpful</h2> <p>I have found the following related questions to be unhelpful (but may be of use to others):</p> <p><a href="https://stackoverflow.com/questions/6195772/rvm-and-passenger-no-such-file-to-load-bundler">RVM and Passenger: No such file to load - bundler</a> - resolution was leftover configurations from an old virtual host in Apache configuration files.</p>
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload