Running patched rails, monkey-patch

Hi,

Does anyone have any tips for running a patched version of rails? I am
currently running rails 1.2.2 and would like to keep up to date with any
future releases. I also want to run with the following patch:

http://dev.rubyonrails.org/ticket/5748

I am unsure how to manage this. Is this something SVN or rake can
handle?

If the patch is not too complex you can also apply it as a monkey-
patch. This is quite simple, just create a ruby-file inside lib with
a class in there of the same name, and inside the same modules as
the rails-class. Then add changed versions of all the functions you
want changed.

Require this file at the end of your environment.rb, and you're done.

I myself make use of this method quite extensively, but of course you
shouldn't over-do it and of course try to get improvements and fixes
that everyone would enjoy into the rails-trunk.

Wybo

Along the same lines, I recently did something similar. This might
not be the best solution, however I created a patches.rb file that
gets loaded by environment, an example in there:

# Monkey Patches
# Fixes a bug in rails 1.2.2 where Arrays are being improperly handled
in query parameters
# It should only be converted to a '/' joined string if it's a :path
element
if Gem::GemPathSearcher.new.find('rails').version.to_s == '1.2.2'
  class ActionController::Routing::RouteSet
    def options_as_params(options)
      options_as_params = options[:controller] ? { :action => "index" } :
{}
      options.each do |k, value|
        options_as_params[k] = (value.class == Array && k.to_s !=
'path') ? value : value.to_param
      end
      options_as_params
    end
  end
end

This way I won't override anything if they fix it in the next release,
and if it still isn't fixed, I can just update the version check.

Anyways, hope that helps some.
  .adam sanderson