In September 2010 reInteractive began supporting and maintaining the AgenciesHQ website. With a development team already churning out features as fast as they could, AgenciesHQ partnered with reInteractive for the expert backup and support they needed to perform some of the more serious tasks.
The first task given to reInteractive was to migrate the AgenciesHQ site from Rails Machine, to their new provider, Engine Yard's AppCloud service. The existing server had custom deploy scripts, used the Sphinx full text search engine, SSL front end, background processing of indexes, a PostgreSQL database as well as a lot of end users, all very interested in zero downtime.
reInteractive took up the challenge and with our host migration checklist moved the AgenciesHQ site over to EngineYard with minimal disruption. First, a new staging environment in EngineYard was setup, and their existing production applications were migrated. This included writing custom Chef recipes for their setup and testing the deploy process.
Thanks to our migration checklist, as well as several dry runs, the actual deployment went very smoothly and AgenciesHQ was up and running on their new servers without incident.
Rails 3 Upgrade
With the application now deployed, AgenciesHQ had reInteractive perform two new upgrades, bringing their app up to Rails 3 and also migrating from Ruby 1.8.7 to 1.9.2.
Instead of doing these together, the more sane approach was taken, and these were done one at a time. reInteractive first updated their application to Rails 3. This included doing the ground work of the update, cleaning up the code base and fixing the extensive test suite to work with Rails 3. Part of this process included patching a gem that AgenciesHQ used to speed up their test suite, so that it was compatible with Rails 3.
We then did significant work on fixing up various parts of the application with the AgenciesHQ developers to get the tests passing again and the application running.
Once done, again, reInteractive setup a clone staging environment and tested the upgrade process. When we were happy that the upgrade could proceed smoothly, we went ahead.
Ruby 1.9.2 Upgrade
With the tests now working and the app able to be pushed, we setup another clone environment and dry ran the upgrade. Once everything was running smoothly, we updated their production application to Ruby 1.9.2 within one 5 minute downtime window.
Now that the application was running on Rails 3, it was time to update to 1.9.2. Again, the same process was followed. First update locally on dev systems to ensure 1.9.2 compatibility, with reInteractive fixing up the 1.9.2 syntax errors and standard library changes. Once this had been completed and pushed, AgenciesHQ developers did further work to repair broken test cases.
The speed increase after moving to Rails 3 and Ruby 1.9.2 combined has been almost 40% and well worth the work done.
Single Sign On Upgrade
Once the upgrades had been completed, Kyle came back to reInteractive and pitched us the idea of having multiple applications share a common login using the CAS authentication system.
We found the solutions on offer at that time were not adequate for this, and so we undertook a project called Cassy where we created a Rails engine that provides the CAS authentication and could be implemented into any application. This gem is now used in AgenciesHQ's production applications and is working brilliantly.
Now that the application is current, AgenciesHQ have a list of jobs for reInteractive to do on their site, to help backup their in house team.
“Mikel has a passion for his work and it comes through in the finished product. He's extremely easy to work with, bounce ideas off of and ultimately partner with to make a vision become reality. reInteractive has my highest recommendation!”Kyle Ginavan, AgenciesHQ