Raise early instead of passing nil

Will make errors a bit less confusing
Point to ruby 1.8 shim

Using a shim allows us to catch when 1.8 of ruby is not present and provide other options.

#ignore
Merge textmate master