capsitrano fails looking for ruby gems

capsitrano fails looking for ruby gems

Posted by: fortuity
Posted on: 2006-12-20 22:38:00

I'm attempting to deploy my first RoR app using capistrano with a few gems (that Dreamhost doesn't provide) in my own local directory.

Some things work, such as "cap deploy". But "cap migrate" wants one of my local gems and can't find it.

Here's my ~/.bash_profile:
export GEM_HOME="$HOME/.gems"
export GEM_PATH="$GEM_HOME:/usr/lib/ruby/gems/1.8"
export PATH="$HOME/.gems/bin:$PATH"

and I have a .gemrc file, too.

When I ssh in and try "env" I get:

[washington:/home/fdmoves]$ env
(...)
HOME=/home/fdmoves
GEM_HOME=/home/fdmoves/.gems
PATH=/home/fdmoves/.gems/bin:/usr/local/bin:/usr/bin:/bin:/usr/bin/X11:/usr/games
GEM_PATH=/home/fdmoves/.gems:/usr/lib/ruby/gems/1.8
(...)

Here's where things get interesting.

When I try "cap shell" and "env" I don't see the GEM_HOME and GEM_PATH environment variables.

$ cap shell
loading configuration /Applications/Locomotive2/Bundles/rmagickRailsSept2006_ppc.locobundle/framework/lib/ruby/gems/1.8/gems/capistrano-1.2.0/lib/capistrano/recipes/standard.rb
loading configuration ./config/deploy.rb
* executing task shell
(...)
cap> env
[establishing connection(s) to fdmoves.info]
Password: ******

[fdmoves.info] executing command
(...)
[fdmoves.info] PATH=/usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin
(...)
command finished


It appears capistrano doesn't have the same environment when it runs, so it doesn't know the GEM_HOME and GEM_PATH.

So here's my question. How do I force capistrano to pick up the shell environment variables when it runs? Why doesn't it pick up the environment variables that are set in my ~/.bash_profile ?

Any suggestions will be most welcome!

-- Daniel


Tags: gemsusr bindreamhostrubylibdeployshellrbenvironment variablesexport pathbin binrorlocal directoryx11sshppcrecipes