Search code examples
ruby-on-railsrubypassengerenv

Setting environment variables for Phusion Passenger applications


I've set up Passenger in development (Mac OS X) and it works flawlessly. The only problem came later: now I have a custom GEM_HOME path and ImageMagick binaries installed in "/usr/local". I can put them in one of the shell rc files that get sourced and this solves the environment variables for processes spawned from the console; but what about Passenger? The same application cannot find my gems when run this way.


Solution

  • I know of two solutions. The first (documented here) is essentially the same as manveru's—set the ENV variable directly in your code.

    The second is to create a wrapper around the Ruby interpreter that Passenger uses, and is documented here (look for passenger_with_ruby). The gist is that you create (and point PassengerRuby in your Apache config to) /usr/bin/ruby_with_env, an executable file consisting of:

    #!/bin/bash
    export ENV_VAR=value
    /usr/bin/ruby $*
    

    Both work; the former approach is a little less hackish, I think.