BoxCycle Upgrades to Rails 3.2.3 and Ruby 1.9.3
With the high priority features and process improvements complete and stable, we took the opportunity to bring our technology stack up to date. Rails 2 to 3 upgrade is a significant undertaking. Ruby 1.8 to 1.9 upgrade is less strenuous, but still creates a number of code changes and pitfalls.
To ease this transition, we delayed the upgrade until BoxCycle was at a stable point and the community and infrastructure around the new Ruby and Rails versions matured. It was still a time consuming and sometimes frustrating endeavor, but the transition is now complete. Along with Ruby and Rails we also upgraded our year old installations of Passenger and Nginx.
What Does This Mean To Users?
Given the extent of the transition, it’s possible that you’ll run into an occasional issue as we work through problems that sneaked through our testing. But by and large things should work and look very similar.
So what are the benefits to you?
Speed: Many of the changes to these latest components were done to improve speed. Ruby 1.9.3 is significantly faster than 1.8.7. Rails 3.2.3 is in some respects faster than 2.3.14 we were using and offers an infrastructure that enables future optimizations. And the upgrade allowed us to clean up a few inefficient parts of BoxCycle. Overall, we expect BoxCycle to be a bit snappier after this upgrade.
Product Development: Being up to date makes it much easier and faster for us to fix problems and add features. In part, this is because new versions improve the development process. And in part, it is because external components we depend on now, or will want to use in the future, increasingly require Rails 3 and Ruby 1.9. This upgrade was necessary to keep BoxCycle moving forward.
Why The Quick Jump?
We originally expected to just move to Rail 3.0.12 and stay with Ruby 1.8.7, planning to perform additional updates after the dust settled. And internally, we actually did upgrade to 3.0.12, then to 3.1.4, then to 3.2.3, and then finally upgraded Ruby to 1.9.3. However, at each step we ran into difficult issues that the next upgrade helped to resolve. And after doing much of the work to get to the next version working it made more sense to stick with it and optimize resources spent on testing by consolidating the upgrades.