I spent the better part of the entire day yesterday upgrading my blog from BlogCFC version 3.9 to the latest and greatest 5.5. I've been meaning to upgrade for some time but knowing the amount of work that was going to be involved I put it off. While the process went smoother than I expected (always good), it was a major time commitment. It took several hours to create a staging environment to perform all the work, which included getting all my production data pulled down and working in a new 3.9 instance. I already had my blog running on localhost but I wanted to isolate the upgrade in case I ran into issues along the way. The next step involved getting Ray's latest and greatest code from his Subversion repo and creating a vanilla 5.5 install. Super easy.
Now that I had a 3.9 database and a 5.5 database I went about comparing the architecture of the two and writing scripts that would bring my 3.9 database up to par. This consisted of several ALTER TABLE statements needed to add columns to existing tables, some UPDATE statements to bring my existing data into compliance with new columns, and Ray's CREATE TABLE statements for tables that weren't in the 3.9 version. It wasn't a big deal, but I went slow and was very careful to document every single change I made and test all my code against the staging environment. I did this by pointing the staging DSN (for the vanilla 5.5 install) to my newly upgraded 3.9 database. Everything worked flawlessly.
At this point I had my production data on localhost, I had written scripts to migrate my production database, and I had tested the scripts pretty thoroughly. My next step was to merge all the 3.9 customizations I had made - including styles - into the vanilla 5.5 codebase. This step was by far the most time consuming taking somewhere in the neighborhood of 4-5 hours. Ugh. I had applied the aura styles and cleaned them up significantly, not to mention shoe-horned my own custom background images into 3.9. While working with all the styles I recalled how many pain-staking hours it took to originally create the graphics and styles. Not being a designer and certainly not being good at cutting up graphics for a Web site, the work took at least a day and half. To get things right this time - in 5.5 - was not as bad but it's not the kind of coding I really enjoy.
With the database migrated and my customizations in place it was time to load everything up to production. It only took 20 minutes to run the scripts against the live database and upload the new codebase. However, in this small amount of time over 1500 RSS error e-mails were generated. My application level CFABORT and maintenance message stopped no telling how many e-mails, but before I had that in place several minutes had passed. The errors were thrown due to the 5.5 code residing on the server before the database changes were made. Just goes to show, that Ray's blog software works amazingly well if I can get 1500 error e-mails in about 5 minutes. I can't even imagine what my Inbox would look like if a major error was introduced to production code and left unresolved.
So, 5.5 is up and so far is running well. I'll be watching it closely over the next few days; if you notice anything funky please let me know. In an effort to help anyone else upgrading from BlogCFC 3.9 to BlogCFC 5.5 I've zipped all my SQL code and made it available as a download. Use the Downloads pod to the right or simply click here.