Since I upgraded to Typo 4.0, and in the process rails 1.1.6 I have had a few occurrences where nanoRAILS would hang, several bloated processes would be sitting there and not respond, and the only option at that point was to kill all ruby processes once I realized what was happening, which could be several hours. Suffice it to say, this is not a good option.
So after struggling during last rails upgrade to 1.1 on my host, the next logical step is to also use my own version of ruby so I can have better control on its environment, and even apply patches if necessary.
The following steps apply on a lot of systems. More specifically, my host is DreamHost (aff), and as best I can tell, I’m on a host with Debian Sarge.
Build your own Ruby
Download ruby from http://www.ruby-lang.org. The latest version is currently ftp://ftp.ruby-lang.org/pub/ruby/ruby-1.8.4.tar.gz
Create the makefile using
./configure prefix=[YOUR_OWN_RUBY_PREFIX]
Since you most likely don’t have root access, you need to override where ruby think it resides, and the way to do that is to set the prefix to somewhere into your home directory. Something like /home/USERNAME/ruby for example. From that point on, libraries, other builtin ruby files, gems will automatically install into your own ruby repository so you never have to worry about getting in trouble with an unforeseen upgrade.
Optionally, you can apply the patch used by Railsbench, with hardcoded default values because I haven’t figured how to set the environment variables for the dispatch.fcgi process (since apache in my case determines that). Download my version of rubygc.patch .
patch gc.c rubygc.patch
Build and install ruby
make make install
Additionally, so that the command line uses the same version of ruby, add this to your .bashrc or equivalent for your shel.
export PATH=[YOUR_OWN_RUBY_PREFIX]/bin:$PATH
Install your own gems
Now you are ready to install your own gems. Here’s the bare minimum you need.
First, install rubygems
wget http://rubyforge.org/frs/download.php/11289/rubygems-0.9.0.tgz tar xzvf rubygems-0.9.0.tgz cd rubygems-0.9.0 ruby setup.rb
Then install the minimum set of gems:
gem install mysql gem install fcgi gem install rails --include-dependencies
Now, the only thing you need is to change the path to ruby in your dispatch file (dispatch.rb for mod_cgi, dispatch.cgi for regular cgi, and dispatch.fcgi for FastCGI/fcgid)
Typically, replace
#!/usr/bin/env ruby
by
#![YOUR_OWN_RUBY_PREFIX]/bin/ruby
Replace [YOUR_OWN_RUBY_PREFIX] by your own value you used earlier.