Let's Talk

How can we support your Rails application?

Rails Application Upgrades & Maintenance

Software is an investment for your business; now that your web application is launched, you need to ensure it continues to perform at its best. Without dedicated support, bugs stack up and systems become outdated, all of which can introduce security concerns. When you don't have an in-house team providing support, updating Rails turns into a fire drill, can be pricey, and may lack thoughtful consideration of the entire product.

thoughtbot, one of the world's most experienced Rails development teams, is here to help and has a part-time support and maintenance team dedicated to supporting Rails applications long-term.

Image collage with a developer coding, a remote office space, and a bookshelf of coding & software development resources styled to look like thoughtbot logo Ralph robot

Quote from Rain

The best part was that we got to work closely with very talented developers and great communicators at thoughtbot. They had a good process in place. Everything was tested. They were very methodical about setting us up with the best structure for the app.

A headshot of Joseph Dallago

Joseph Dallago
Co-Founder & CEO, Rain

we wrote the book, the podcast, the guides...

Tap into 16+ years of Rails expertise whenever you need to

It's vital to proactively maintain and improve your Ruby on Rails application, but hiring talented Ruby developers may not be an option. Partnering with thoughtbot allows you to tap the expertise we are most known for - Ruby on Rails - whenever a need arises. What sets our maintenance team apart is we proactively suggest improvements, and come to you with ideas and suggestions, as we continuously look for ways to make maintenance, scaling, and future development more efficient.

thoughtbot has been a passionate and active participant in the Ruby on Rails community since the beginning because we continuously see the competitive advantage it gives companies as they grow. We are well-known in the open-source community and have created a number of open-source libraries, including factory_bot, administrate gem, shoulda, dotfiles, and suspenders.

Collage of three photos: thoughtbot teammate working at laptop, a stack of thoughtbot branded mugs, and the back of a developer in front of a pinboard

How it works

A proactive, consistent partnership

We understand your business, product, and ebbs and flows in your team's bandwidth. The Rails Maintenance team is structured in a way that provides you with the flexibility you need. We can increase and decrease bandwidth based on your priorities.

We are also comfortable working within a monthly budget so you can project your long-term maintenance costs. We use an hourly rate to describe our team and report on progress made at the close of each week. Our most successful partnerships include standing prioritization meetings to ensure we are all on the same page and your expectations are being met.

thoughtbot can tackle

  • Ongoing feature development
  • Performance Improvements that save you money & optimize hosting
  • Code updates in line with compliance and security requirements
  • Rails upgrade, security patches, and gem upgrades
  • Bug fixes
  • Modernization of application deployment
  • Test coverage, test suite and automated test improvements

Quote from TuneCore

Their proactive, independent approach was the ideal solution for this project. The end result was well-organized and was more impressive than a competing proposal.

A headshot of Neil Bhay

Neil Bhay
VP of Technology, TuneCore

rails thought leadership

Check out the team's expertise

Testing Rails

Learn to test Ruby on Rails web applications from the ground up with Rspec in this comprehensive guide to modern testing practices.

Test like a pro

Ruby Science

The canonical reference for writing fantastic Rails applications from authors who have created hundreds.

Get scientific!

Open-Source Libraries

Some of our most popular libraries include factory_bot, administrate, dotfiles, and suspenders.

Head to github

RailsConf Presentations

thoughtbot was fortunate enough in 2022 to have a few thoughtbotters join as Rails Conf speakers.

Listen to their presentations

Our Playbook

This is our playbook. It details the best ways we've found so far for how we make successful web and mobile products.

Dive in

How to supercharge your Rails app with a code audit

During this workshop, thoughtbot shares best practices for auditing Rails codebases, and how to shift to actionable items without sacrificing speed of feature development.

View recording

Questions & Answers

Common Q&A about Rails upgrades and Rails maintenance

Why is a Rails upgrade important?

As your business evolves, you will need to upgrade to new Ruby and Rails versions that support updated functionalities for your app. You also want to upgrade to ensure that external code or resources, such as gems and other open-source libraries, third party integrations, and architecture platform configurations, continue working properly. The more versions your application is behind, the more difficult it is to upgrade, so it pays to prioritize this work along with feature releases and enhancements.

When should you upgrade your Rails application?

At minimum, you should always keep your Rails app updated with the latest patch version of the current major.minor version you are running. The minor version should be updated at a minimum each year. Updating the major version can often be a large undertaking, but ideally should be upgraded within several months of the new version release.

How do I prepare a Rails app for an upgrade?

  • Aim for at least 80% test coverage before starting the upgrade project.
  • Make sure that you are running the application with the latest patch of the major version you are running. Your test suite output and development logs will provide a series of deprecation warnings that will be useful in guiding your upgrade.
  • Upgrade Ruby to the latest version if possible. If you are working on a legacy Rails upgrade, then upgrade Ruby to the latest version supported by your version of Rails.
  • Review your Gemfile and make sure that all the gems listed are actually in use.
  • If you have a high-traffic application, consider creating  a dual boot mechanism. One way to handle this is to install the next_rails gem. 
  • Once you have laid the groundwork for your upgrade, you can refer to the Rails guide on what your specific version upgrade will require.

How do we upgrade the Ruby version in a Rails App?

  • Install the latest Ruby version
  • Update your Gemfile with the new Ruby version
  • Run “bundle install” to install the gems for the new Ruby version
  • Test your app and fix any deprecation warnings
  • We recommend going through all of your gems and updating them to the latest version possible as part of the Ruby upgrade. thoughtbot regularly maintains our open source gems such as shoulda, administrate and factory_bot, and it is important to keep these and others in your application up to date,

How do I upgrade Rails?

When changing Rails versions, we recommend moving through one minor version at a time. This enables you to take advantage of the deprecation warnings. Major and minor versions are allowed to make changes to the public API, so this may cause errors in your application. Patch versions only include bug fixes, and don't change any public API. RailsGuides recommends the following process:

  • Write tests and make sure they pass.
  • Move to the latest patch version after your current version.
  • Fix tests and deprecated features.
  • Move to the latest patch version of the next minor version.
  • Change the versions for Rails JavaScript packages in package.json.

Repeat this process until you reach your target Rails version.

What is the process for updating Rails?

To move between versions:

  • Change the Rails version number in the Gemfile and run bundle update.
  • Change the versions for Rails JavaScript packages in package.json and run yarn install, if running on Webpacker or cssbundling-rails.
  • Run the Update task.
  • Run your test suite.

After updating the Rails version in the Gemfile, run rails app:update command. This will help you with the creation of new files and changes of old files in an interactive session. Don't forget to review for any unexpected changes.

The new Rails version might have different configuration defaults than the previous version. To allow you to upgrade to new defaults one by one, the update task has created a file config/initializers/new_framework_defaults_X.Y.rb (with the desired Rails version in the filename). You should enable the new configuration defaults by uncommenting them in the file; this can be done gradually over several deployments. Once your application is ready to run with new defaults, you can remove this file and flip the config.load_defaults value.

What other tasks should be part of maintaining a Rails application?

Maintenance encompasses all the ongoing tasks needed to optimize your Ruby on Rails app including:  

  • Regular auditing of a website or application by tracking page load times and error reports
  • Optimizing database queries
  • Keeping database versions up-to-date
  • Uptime monitoring
  • Bug & error fixing
  • Regular data backups
  • Platform architecture upgrades
  • Test suite upkeep

To optimize your software product and the user experience, you’ll want to have a plan to complete these maintenance tasks within your team or hire a partner to manage regular monitoring and upgrade tasks.

What is the latest version of Rails?

As of September 9, 2022 Rails 7.0.4 was released. You can keep up to date on all released versions here. 

What are the risks of not doing regular Rails maintenance?

Unmaintained code can allow your application to become outdated and prevent you from deploying changes to production. In addition, many sites depend on third-party integrations. If the third-party service makes changes to their API and you don’t make the corresponding upgrades, then parts of your application may stop working. Needing to upgrade through multiple Rails versions can initiate a domino effect of upgrades for gems, other dependencies, and platform configurations. Skipping several consecutive Rails version updates will put you further and further behind and require a bigger lift to bring your app up to date. And perhaps the biggest risk for your business is increased technical debt which brings increased costs; putting off upgrades will cost you more down the line.

Let's chat about your Rails Maintenance needs