Almost every Ruby on Rails application starts life on the latest current version of Rails. But as time moves on, sometimes these applications are not kept up to date with the latest version of Rails. As the months roll by, the application becomes more and more out of touch with the most recent version of Ruby on Rails.
But why does this matter? Why should you, or your management care? There are a bunch of reasons to do so, but I thought I would list out my top 5.
1. Security Patches
Ruby on Rails is an application frame work and underlies everything your web application does. This means it is in a pivotal position of having to be very secure to any sort of attack that they outside world might throw at it. From SQL injection to Cross Site Scripting and many other attack vectors, Rails is there to help your site stay online.
The Rails Core security team have a very clear and actively maintained Security Policy which means security situations get handled rapidly. You can always track the Ruby on Rails Security mailing list, however, the best way to handle this is to be up to date on your Rails version allowing you to rapidly apply Security patches to your application without any upgrade pains getting in the way.
2. Performance Improvements
As there are so many large websites using Ruby on Rails, there is a huge demand for speed. This results in many updates to newer versions of Rails to improve performance. One of the most obvious examples of this was the asset pipeline function released in Rails 3. But there are performance updates in almost every release of Rails. Keeping up to date means it is a simple change to take advantage of these new performance improvements.
3. Ruby Language Improvements
It’s not only Rails that receives updates, they underlying programming language, Ruby, also gets performance and security updates applied to it often. In fact, the older versions of Rails will not even run on new versions of Ruby. There are significant performance updates that Ruby 1.9.3 provides over older 1.8.6 or 1.8.7 versions that you can take advantage if you are on Rails 3 or above.
4. EcoSystem Updates
As Rails improves, the various programming libraries and gems that it depends on also improve and update, with performance and security patches. Unfortunately, if your Rails application is old, you may not be able to take advantage of these as the new software packages may not be compatible with the later versions of Rails.
5. Ease of Upgrades
This is an important one. But the older your version of Rails is, the harder it is to upgrade to a newer version or Rails. Each time there is a Rails version upgrade, there is a mass of blog posts and updates in the community to help developers perform the upgrade, as time goes by, these posts are still online, but they become harder to find and confirm it is regarding the version you are using.
How Long Should an Upgrade Take?
This is a really hard question to answer on a blog post. Most Rails applications can be upgraded within a solid week of development work. However, this gets extended by several factors:
- How old your version of Rails is (the older, the longer it will take)
- How good your test coverage is (the less there is, the longer it will take)
- How complex your application is (the more complex, the longer it will take)
- How many external libraries your app depends on (the more, the longer it will take).
We’ve done many Rails upgrades, and most of them complete within 30-45 hours of development. Some very simple sites got done in 15 hours or less, though this is very rare. The most important thing we have found is having a working test suite, and in fact, if asked to upgrade an application that has no tests, we will insist on getting a test suite written first to make it possible for us to know if the application works once we are done.
Having said all this, the good news is, that once you are current, maintaining your application at the latest version of Rails can take 5-10 hours per major upgrade.
So if you have a Rails application, and would like us to upgrade you to a later version of Rails, please get in touch with us and we’ll help you out.