Reloading Ruby Classes in Rails
I ran across a bug in Date::Format today, and after spending a few hours hacking away at a fix (the date/format.rb code is uuuuugly and sloooow…someone should really rewrite that. Better yet, rewrite it in C), I thought I’d submit a patch. So I grabbed the ruby_1_8 branch and lo and behold, my issue had already been fixed!
So the question now was how to monkeypatch the entire Date::Format module? Simply require
-ing it as a plugin doesn’t work, since Date::Format is already loaded at that point. The trick then is to use load
instead of require.
First, I tried this:
(note: load needs the actual filename; it doesn’t have the magic that require does) but that gave me an error:
Turns out Rails::Plugin::Loader defines its own load
, so:
et voila!