The reason there is a 500 error is that Google’s servers are tripping up
on the _rnr_se variable now includes characters like
+/=. Looks like a base64, but watching the network traffic
in Firebug shows that Google’s javascript sends the raw value without
any modifications.
So you need to replace line 90 with the following line. That’s it! No other changes are necessary.
rnrse = CGI.escape(newres.match(/'_rnr_se': '([^']+)'/)[1])
(The change: Surround the matched value in a CGI.escape call, so that
+/= is url encoded for Google’s sake.)
Also, it’s working fine in Arch Linux, running ruby v1.9.2. :-)