In September 2010 reInteractive started supporting and maintaining the AgenciesHQ website. Kyle, the lead developer, already had a development team in place that were churning out features as fast as they could. But partnering with reInteractive provided AgenciesHQ with the expert backup and support they needed to perform some of the more serious tasks.
The first task given to reInteractive was 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 the challenge and with our host migration checklist moved over the AgenciesHQ site to EngineYard with minimal disruption. We first setup a new staging environment in EngineYard, and migrated their existing production applications. This included writing custom Chef recipes for their setup and testing the deploy process.
Due 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 of doing 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 also fixing the extensive test suite to work with Rails 3. Part of this process included patching a gem that AgenciesHQ use 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 so that it would run and worked 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, once we were happy the upgrade could proceed smoothly, we went ahead.
Ruby 1.9.2 Upgrade
Now 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 was done and pushed, AgenciesHQ developers did further work to repair broken test cases.
With tests now working and the app able to be pushed, we setup another clone environment and dry ran the upgrade. Once all things were smooth we updated their production application to Ruby 1.9.2 within one 5 minute downtime window.
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
A month or two later, 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 currently on offer 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 can 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 rubyx 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 recomendation!”Kyle Ginavan, AgenciesHQ