I’m starting on my daily refactors again but this time I’m going to focus on the Redmine core codebase. With Redmine’s recent 1.0 release, I now have the flexibility to make some major changes to it’s internal code to get it ready for some new features.

I’ve used this refactoring several times before to extract common test logic. Using shoulda macros in tests make them easier to read and with the help of blocks and instance_eval it’s easy to make them work with dynamic data.