AI-Assisted Rails 8 Upgrade: 30+ Repositories Modernized in 4-6 Sprints, with 30-40% Less Effort

A real-world case study on an AI-assisted Rails upgrade across gems, applications, and engines, delivered within four to six sprints.

Rails 8 upgrade using AI

Business Requirement

Our client is a leading wellness technology platform. Over the years, their Ruby on Rails estate had grown into more than thirty repositories, each one with its own dependencies, configuration, and release path. The estate was a mix of Ruby gems, Rails applications, and Rails engines, and all of it needed to move to a modern Rails version.

Upgrading one Rails application is a well-understood job. Upgrading thirty-plus interconnected ones is a different problem.

Every repository carried its own production dependencies, and shared components meant that a change in one place could affect many others. Doing this by hand, repository after repository would have consumed a large amount of development effort and put production stability at risk.

Knowing this, the client partnered with RailsFactory (a division of Sedin Technologies) to find a better way. Following a discovery engagement, we proposed a controlled, automation-assisted upgrade that would cut development effort while keeping production protected at every step.

Objective

The goal was to upgrade the entire Ruby on Rails estate to Rails 8 in a predictable, low-risk way. Three requirements shaped the engagement:

  • Reduce the development effort needed per repository.
  • Protect production stability throughout the rollout.
  • Leave the platform with a repeatable approach for future modernization work, not just a one-time upgrade.

The Challenges

Modernizing a large estate brings problems that a single-application upgrade never meets.

Legacy estate spread across 30+ independent repositories. Each repository had its own history, dependencies, and quirks. There was no single codebase where one fix could be applied once and inherited everywhere.

A mixed codebase of gems, applications, and engines. Ruby gems, Rails applications, and Rails engines each behave differently during an upgrade. Shared components had to be upgraded in a way that did not break the applications and engines that depended on them.

Repository-specific production constraints. Every upgrade was bound by that repository's own production dependencies and configuration. A one-size-fits-all script could not simply be run across the estate.

Deployment gated by approvals. Releases moved through shared, coordinated environments and needed approvals before going live. This made careful sequencing as important as the code changes themselves.

Our Approach

We broke the work into four stages, each designed to reduce risk before the next one began.

Step 1: Discovery and Planning

We started with a discovery engagement to understand the scale of the estate. We tried to understand how many repositories there were, what type each one was, and how they depended on each other. This gave us a clear map of shared components, production constraints, and approval paths, and it shaped the sequence of the upgrade. Delivery followed an Agile approach, with the work organized into sprints so that progress stayed visible and priorities could be adjusted early.

Step 2: Building the Ruby Upgrade Toolkit

Rather than treat each repository as a fresh problem, we built the Ruby Upgrade Toolkit, a rules and constraints engine that encodes environment dependencies. Once the rules for a repository's dependencies and environment were captured, the toolkit could automate the repetitive parts of the upgrade, and the same rules could be reused across the repositories that followed.

Step 3: Incremental Migration with AI-Assisted Development

We migrated the 30+ repositories incrementally instead of in one large cutover. Shared components were packaged as gems, so they could be upgraded and consumed independently, and core services were deployed independently of each other. Alongside the toolkit, we applied AI-assisted development to accelerate the upgrade work across the estate.

Step 4: Sequenced, Approval-Gated Deployment

Deployment followed the approval structure of client's shared environments. We sequenced releases so that each one moved through the required approvals before reaching production. The result was a rollout in which each repository went live in a controlled order, with production protected throughout.

The Solution

In summary, the solution combined four elements:

  • Incremental migration. More than thirty repositories were migrated step by step, with shared components packaged as gems and core services deployed independently.
  • The Ruby Upgrade Toolkit. A rules and constraints engine that captures environment dependencies and automates repository upgrades.
  • AI-assisted development. AI tooling applied across the estate to speed up the upgrade work.
  • Approval-gated deployments. Sequenced releases that respected client’s approval process and protected production.

Tools and Technologies

  • Languages and frameworks: Ruby, Ruby on Rails, Ruby gems, Rails engines

  • Upgrade automation: Ruby Upgrade Toolkit (rules and constraints engine)

  • Development approach: AI-assisted development, Agile delivery

Benefits to the Client

Significantly reduced development effort. Automation and AI-assisted development meant that most repositories were upgraded within four to six sprints.

A reusable toolkit for future modernization. The Ruby Upgrade Toolkit is estimated to accelerate comparable modernizations by 30 to 40 percent.

Controlled, dependency-aware upgrades. Because the toolkit encodes environment dependencies, upgrades respected each repository's constraints, which kept production stable throughout the rollout.

A modernized, scalable Rails foundation. The estate now runs on a current Rails stack that is ready to support continued growth.

Conclusion

Upgrading more than 30 Rails repositories does not have to mean repeating the same work for every repository. By investing early in a reusable, rules-based toolkit, pairing it with AI-assisted development, and sequencing deployments around client's approval process, we upgraded all repositories in four to six sprints while protecting production.

The toolkit is the lasting result of the engagement. It gives a faster, safer path for comparable modernization work, and the estate itself now stands on a Rails foundation ready for continued growth.

Planning a Rails upgrade across multiple repositories? Explore our Rails upgrade services or contact the RailsFactory team to discuss your requirements and see if we’re the right fit.

About RailsFactory

RailsFactory is a Ruby on Rails development partner with more than 20 years of experience in building, maintaining, and modernizing Rails applications for startups, SMBs, and enterprises. As a division of Sedin Technologies, we combine agile delivery, deep Rails expertise, and automation to turn legacy systems into scalable, secure platforms.

Your one-stop shop for expert RoR services.

Join 250+ companies achieving top-notch RoR development without increasing your workforce.