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.
- latest chruby
- latest Passenger
.ruby-versionfile 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
# 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!