Update and Redevelopment

Hey all, first post here, looking for some answers that I couldn't
find otherwise on the web.

Several years ago, my company hired a developer to develop a database
system for our company. It handles all customer records, and is used
by 6-10 users on a daily basis. It was written with Rails 2.0.2 (I
know, archaic). The developer used a ton of non-traditional
approaches to the code, so attempts to upgrade to a newer version have
caused half the system to not work, resulting in more time reverting
code and SVN back to its original state.

After numerous updates, enhancements, addons, etc., it now crawls
along slowly, and the interface isn't very efficient. I know a lot of
the problem is JavaScript, as it has 4 libraries in place to do
everything the system needs to do (most of which is unnecessary eye
candy - while I want things to look good, every form element does not
need to be skinned). However, a lot is poorly written code (some was
the original developer not knowing MVC that well, some was my early
"I'm still learning the language" code that probably takes 10x the

What I'm getting at is I believe our system needs an overhaul - a
complete rewrite from top to bottom - and I'd like to do it with the
most recent version of Rails. The biggest issue I have with this is
that it currently uses over 100 tables to handle all the data, not all
of which is very efficient. I don't want to rewrite the entire back
end database schema, because the majority of it is well factored, and
some of the code in some of the helpers and models is very good.
However, I believe this deserves starting over with a whole new, mess-
free RoR project.

I know I can copy and paste code over without a problem. But what I
need to know is this: Is there an easy way to migrate the database and
model code over without having to rewrite all of it?

Thank you in advance for your help.

I get the feeling - I really do. But just before you start, go get a copy of Mike Feathers excellent book on Working effectively with legacy code. I’d strongly recommend using some of his patterns to slowly port to the new version of the app. They aren’t trivial to implement, they add additional complexity during the transition period, but compared to the death march that most ground up rewrites end up as, I can’t suggest too strongly to think twice about a big bang, ground up rewrite.


Just my 2c. Hopefully someone else will chime in about porting the schema and model code.

Best Wishes,