Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 3: Passenger can't find git gems installed by bundler

Rails 3.0.0, Passenger 2.2.15:

  • Create a new Rails project
  • Add gem 'paperclip', :git => 'git://github.com/lmumar/paperclip.git', :branch => 'rails3' to your Gemfile
  • Do bundle install
  • Everything OK, starting with rails/script server & accessing also works
  • However, when accessing with Passenger, it says:

git://github.com/lmumar/paperclip.git (at rails3) is not checked out. Please run bundle install (Bundler::GitError)

I have tried bundler pack (doesn't help) and setting BUNDER_HOME to ~/.bundler (the Paperclip git gets installed there by bundler install) in the .htaccess and various places in config/*.rb, but this wasn't successful, too.

~/.bundler is owned by the same user as the Rails project (Passenger runs under this user), so it can't be a permission problem. sudo is installed and called by bundle install.

Any hints?

like image 388
junique Avatar asked Aug 31 '10 00:08

junique


4 Answers

Im used to have this problem, resolve using

bundle --deployment

Which will install the gems in vendor/bundle

like image 164
Roberto Avatar answered Oct 31 '22 19:10

Roberto


Solution (took me a few hours):

Mare sure that RAILS_ROOT/.bundle/config (SetEnv etc. didn't work for me) contains:

--- 
BUNDLE_PATH: /home/xxxxx/.bundler

Note BUNDLE_PATH, not BUNDLER_PATH! There was also an DISABLED_SHARED_GEMS=1 entry, I removed it.

Then bundler recognises the correct path even when loaded from Passenger. Without Passenger, it always worked (and used /home/xxxxx/.bundler, as said in the question)

like image 25
junique Avatar answered Oct 31 '22 19:10

junique


You can use bundle install --path vendor/bundle to install the gems locally, instead of into system gems.

If you want to keep using system gems, though, it's just one line in your Apache configuration to tell Passenger where to find your system gems:

SetEnv GEM_HOME /Users/bob/.bundle

There's a slightly more elaborate writeup on my blog at Using Passenger with GEM_HOME set

like image 8
indirect Avatar answered Oct 31 '22 18:10

indirect


I ran into this problem while writing a Sinatra app. To solve it I added this line to config.ru.

require 'bundler/setup'
like image 4
declan Avatar answered Oct 31 '22 18:10

declan