views:

2432

answers:

4

I have a Rails 3 app ready for staging.

I haven't got a VPS host set up yet. As I was planning to have everything on shared host for the first few months.

Problem:

cd myapp bundle check result:

The Gemfile's dependencies are satisfied

Passenger error:

Error message:
    no such file to load -- bundler
Exception class:
    LoadError

Frustrating thing about shared hosts is that I have to add these lines on config.ru:

ENV['GEM_HOME'] = '/home/username/.gems'
ENV['GEM_PATH'] = '$GEM_HOME:/usr/lib/ruby/gems/1.8'

Still no luck. Same no such file to load bundler error appears.

Has anybody got this working? Rails 3, Debian, shared host (dreamhost)?

I could just go ahead and register on Slicehost/Fivebean but before I do, I'd like to know why that error is showing up.

Thanks.

+2  A: 

Rails hosting on shared hosts is already a minefield, but throwing in Rails 3 in all its pre-release goodness including Bundler reinventing the rubygems workflow is a recipe for pulling your hair out.

I host a few Rails sites on Dreamhost, but only the versions they officially support, otherwise it's just not worth the time. You can get a VPS now for almost as cheap as Dreamhost, and you will save hours and hours of your own time.

If you're looking for an easy answer, I'd suggest voting up the following and crossing your fingers:

http://stackoverflow.com/questions/2250247/rails-3-on-dreamhost

dasil003
AH yeah... Fivebean. Hope to deploy soon. Dreamhost sucks.
kgpdeveloper
+2  A: 

Passenger doesn't read environment variables from config.ru until after it has loaded. Without your backtrace I can't be positive, but I suspect everything will work if you just run bundle lock. If you're still having trouble after that, there's a list of troubleshooting information at the bottom of the bundler README that I need to know exactly what's going on.

indirect
Everything works perfectly on VPS. :) Without bundle lock. I set it up yesterday. Thanks. http://www.blog.bridgeutopiaweb.com/post/rails-3-on-ubuntu-karmic-koala-fivebean/
kgpdeveloper
bundle lock solved my problem. Thanks a bunch!
Magnar
A: 

Found some random blog. It had some lines that went in 'config.ru', that seemed to work for me.

ENV['GEM_HOME'] = '/home/farleyknight/.gems'
ENV['GEM_PATH'] = '$GEM_HOME:/usr/lib/ruby/gems/1.8'
require 'rubygems'
Gem.clear_paths

Maybe it will work for you..

Farley Knight
it didn't work here. I voted down because of a typo. ENV['GEM_PATH'] line should read like this: ENV['GEM_PATH'] = "#{ENV['GEM_HOME']}:/usr/lib/ruby/gems/1.8"
Tim Harper
$: << "/usr/lib/ruby/gems/1.8/gems/bundler-0.9.26/lib", on the other hand, did work for me :S
Tim Harper
+3  A: 

The solution is here http://rvm.beginrescueend.com/integration/passenger/. You need to point your HTTP server to passenger_ruby wrapper instead of bin/ruby.

E.g. for RVM & Apache it should be something like that:

PassengerRuby /Users/username/.rvm/bin/passenger_ruby
hipertracker