NOTICE: Don't even try this on 2.0... It's tested against 2.1.2 only but I plan to have it working on 2.2 soon.
Once upon a time there was dev_mode_performance_fixes. I was on a Powerbook at the time and almost crying from how slow Rails 1.2 was in development mode for any non-trivial app.
Then things changed...
Rails went 2.0, I got a Macbook Pro, and the plugin was all but forgotten. I think there was some minor interest in making it work with 2.1 but I didn't pay much attention because it really wasn't an issue for me anymore.
...and many moons came and went.
Today I'm proud to announce rails_dev_mode_performance. It's the original plugin reborn. I'm seeing an order of magnitude (12x) improvement in performance.
It's mostly a port of the old code to Rails 2.0 with all new hacks to deal with Rail's new TemplateFinder and it's dev mode performance issues. And now it's on GitHub... so if you want to contribute you can e-mail me bug fixes or fork the repository and send me a pull request.
How it Works
How all this works is that we're trying (very carefully) to track every dependency and relationship between objects back to the filesystem. When you edit a file in your application any objects that are somehow affected by that file are flushed and reloaded at the beginning of the next request.
This could mean reloading classes that inherit from a class that was defined in that file... or perhaps you've edited a module that you included in 12 classes... each of those classes have to be flushed before the next request so they can be reloaded to include the new version of your module.
Potential Gotchas
As you can imagine this requires a lot of hooks into dependency loading, modules inclusion, etc... the original plugin was patched numerous time to take this or that edge case into account. I'm sure we'll find more of these edge cases and I think there are probably solutions for most of them.
If you're doing something totally whacked and you know it (loading entire modules and classes from the database would be one thing that comes to mind) then this plugin may never work for you.
I think it can work for most of us though. Please check it out and let me know any bugs or issues you find.
NOTICE: Don't even try this on 2.0... It's tested against 2.1.2 only but I plan to have it working on 2.2 soon.