How would you upgrade

We have a very large application with probably close to 100K lines of code, maybe more. We're still running at 2.3.11, but upgraded to ruby 1.9.3. We were trying to step through an upgrade to 3.0 and every time we make a little progress it seems Rails or Ruby has released a new version, and I can't foresee us every getting caught up as our resources are rather limited. I have one assistant working on upgrading and I'm always working on bugs and feature requests. I know we should freeze the feature requests..... but a full rewrite is so far away, a total freeze won't be accepted.

My one thought was to launch a Rails 4 server and try to upgrade in sections, using 4.0 for anything we rewrite/fix. Unless someone has another thought, can anyone offer any insight as to the best way to run two versions in the same app? Obviously, we'd share the db. But would I shift back and fourth with route changes or manually write out the urls for redirects? Could I share authentication between the two servers? Any ideas or precautions would be appreciated. BTW, this app is NOT publicly available and is used by a relatively small private company internally.

We have a very large application with probably close to 100K lines of code, maybe more. We're still running at 2.3.11, but upgraded to ruby 1.9.3. We were trying to step through an upgrade to 3.0 and every time we make a little progress it seems Rails or Ruby has released a new version, and I can't foresee us every getting caught up as our resources are rather limited. I have one assistant working on upgrading and I'm always working on bugs and feature requests. I know we should freeze the feature requests..... but a full rewrite is so far away, a total freeze won't be accepted.

My one thought was to launch a Rails 4 server and try to upgrade in sections, using 4.0 for anything we rewrite/fix. Unless someone has another thought, can anyone offer any insight as to the best way to run two versions in the same app? Obviously, we'd share the db. But would I shift back and fourth with route changes or manually write out the urls for redirects? Could I share authentication between the two servers? Any ideas or precautions would be appreciated. BTW, this app is NOT publicly available and is used by a relatively small private company internally.

Here's one talk from RailsConf which may help you figure out your path:

http://confreaks.com/videos/2425-railsconf2013-changing-the-wheels-on-the-bus-at-80-mph-upgrading-to-rails-3-on-a

And here's another, even more ambitious (Rails 1.x to 4.0):

http://confreaks.com/videos/2490-railsconf2013-the-long-ball-upgrading-long-lived-rails-apps-from-1-x-4-0

Walter

Just so you know the update from rails 2.3.x to 3.0 is way bigger and more difficult than any of the other upgrades I’ve ever done (I’ve been using rails since 1.0), 3.0 to 3.1 and 3.1 to 3.2 are much much easier. 4.0 will also be a simpler upgrade than 2.3 to 3.0.

Similarly ruby 1.8.7 to ruby 1.9.x is a much bigger change ( in terms of work required) than 1.9 to 2.0.

In a nutshell, don’t lose hope!

Fred