This guide will tell you how to use chruby together with Phusion Passenger.
What we want to achieve is automatic Ruby version switching in Passenger based on the Ruby used by the project.
I’m using zsh, but with small modifications it should also work with bash or any other shell type.
Requirements:
- latest chruby
- latest Passenger
.ruby-version
file present in each app/project
The gist of it is that you need a chruby wrapper script, which will be executed separately for each project by Passenger. Place it in ~/bin
or at any other place where you keep your local binaries:
#!/bin/zsh
# Wrapper for chruby to work with Phusion Passenger
#
# Based on:
# https://github.com/postmodern/chruby/issues/258
# https://github.com/phusion/passenger/issues/1205
source /usr/local/share/chruby/chruby.sh
source /usr/local/share/chruby/auto.sh
chruby_auto
# original call
exec "ruby" "$@"
After that you need to configure Passenger to make use of this script. I’m on OS X, so the file I’m editing is at /etc/apache2/other/passenger.conf
:
# chruby wrapper for Passenger use
PassengerDefaultRuby /Users/<your-username>/bin/chruby-wrapper
# Passenger must read ENV variables for the chruby-wrapper script to work
PassengerLoadShellEnvvars on
# Run Passenger application instance as your current user
PassengerUserSwitching on
PassengerDefaultUser
That’s it! Good luck!
References: