Blog

Why Rails Upgrades as a Service?

Gavin Terpstra
September 20, 2020

It is essential to keep your app up to date with all the latest releases. It is one of those “must be dones” if you want your software investment to keep on bringing in returns. You want it in good shape for a long time to come.

But, developers typically dislike the necessary upgrade task that comes with keeping their framework up to date. Knowing this, we have taken the pain out of upgrading by offering a service that does it for you.

Why Should You Upgrade an Already Working Rails App?

Quite simply, keeping your Rails app up to date with the latest patches and/or versions is essential for the following reasons:

  • Old versions of any software, Rails included, can be an easy target for hackers.

  • If your Rails app does not have the latest security patches applied, then it contains known vulnerabilities. And it’s likely more than one vulnerability if security releases have not been applied for a few months or years.

  • Developers are always looking for ways to improve performance. When a new version gets released, your app will benefit from any performance benefits from updated Ruby and Rails versions. Generally, your app is faster after an upgrade.

  • And, of course, the latest and greatest features are only available on newer versions of Rails. New features are not just new toys, they usually increase development speed.

This article has a summary of the latest features of Rails 6.0: Rails 6 is Here! What you should know and when to upgrade.

With the release of new Rails versions, older versions gradually loose support from the community. For reference, here is the Rails maintenance policy. The older the version, the less support it receives. As a rule of thumb, any version over 3 years old no longer receives support.

The majority of Rails applications are traditionally made up of a number of freely available libraries of code called “gems”, which, together with your custom application specific code create your app. When bugs or security vulnerabilities are discovered in one of these gems, a new version is released to fix the problem. That new version is intended to work with a specific version of each of the gems that it interacts with (known as “dependencies”).

What this means is that you usually cannot update a single gem without impacting the rest of your gem set (or “bundle”). All the gems in your app need to be updated in lock-step with each other, based on their dependencies.

In some cases, an update made to a gem changes the way your code should access the functionality provided by the gem (known as the “interface”). This will require changes to your custom application code so that it can continue to use the functions provided by the gem.

If many gems have changed since your app was last updated, making the required changes to your application can be time-consuming and be the cause of considerable frustration. It is often the case that upgrading one gem appears to break many other things within your codebase. This is where a comprehensive test suite is invaluable.

Put simply, upgrading your application’s dependencies is a long and fairly complex process of cross-referencing versions and checking for changes to the way each gem’s functionality gets called, and implementing those changes in your own code.

There are publicly available tools to help you with this process, such as railsdiff. We also have a number of in-house tools built from our collective years of experience performing Rails upgrades. We have people in the company that have been doing Rails upgrades since Rails 1. Our scars from the Rails Upgrade Battle are deep and we’re better for it.

How Will You Know When it is Time to Upgrade?

Keep an eye out for announcements on sites like . Here at reinteractive we monitor these sites daily, which means that if your app is under OpsCare or CodeCare, we will automatically take care of upgrades for you, keeping your application up to date and free of known security vulnerabilities.

If you see an announcement and don’t have time to deal with an upgrade in-house, give us a call. We are ready, willing, and able to get your app up and running on the latest version and we will do it with a smile.

Probably a very big smile!

Find out more at Ruby and Rails Upgrade Support.