Success Story: Modernizing Muttville’s Ruby on Rails Platform Without Downtime
How JetRuby upgraded a decade-old Ruby on Rails application from Rails 4.2 to Rails 8, introduced Craft CMS, modernized the infrastructure, and completed the production migration with zero downtime.
Table of Contents
Modernizing a legacy application is rarely just a framework upgrade.
For Muttville Senior Dog Rescue, the challenge was much more demanding: modernize a decade-old Ruby on Rails platform while keeping a mission-critical website available to people adopting dogs, making donations, volunteering, and looking for information about senior dog care.
JetRuby approached the project as an incremental modernization rather than a risky rewrite. The team upgraded the underlying technology stack, migrated the database, replaced legacy background jobs, introduced a modern CMS, strengthened security and monitoring, and redesigned the deployment process – while preserving the existing website experience for visitors.
The result is a modern, maintainable platform that went live without downtime and has run successfully in production since April 22, 2026.
About Muttville Senior Dog Rescue
Muttville Senior Dog Rescue is a California-based nonprofit organization dedicated to improving the lives of senior dogs. It was California’s first senior dog rescue and the first cage-free shelter in the United States.
Its website is central to the organization’s day-to-day operations. Visitors use it to explore dogs available for adoption, make donations, register as volunteers, access educational resources, and learn about fostering and hospice care.
Because the website directly supports these activities, technical maintenance could not come at the expense of availability.
The Challenge: Modernize Without Disrupting a Live Mission-Critical Platform
Muttville had been running on a Ruby on Rails application for more than ten years.
Over time, the technology stack became increasingly difficult and expensive to maintain. The application was running on an outdated version of Ruby and Rails, relied on legacy infrastructure components, and required engineering involvement for routine content changes.
Even relatively simple updates – such as changing campaign banners, editing team information, or updating fundraising content – often depended on an external contractor.
A more fundamental operational problem also existed: planned maintenance could require taking the website offline for several hours.
For a conventional corporate website, this might be an inconvenience. For Muttville, downtime could interrupt adoption activity, donations, volunteer registrations, and other services people rely on every day.
The modernization therefore had to solve several problems simultaneously:
- Bring the Ruby on Rails application onto a current, maintainable technology stack.
- Replace legacy infrastructure components and technical dependencies.
- Improve security and observability.
- Give Muttville staff control over routine website content.
- Preserve existing integrations and user journeys.
- Keep the production website available throughout the modernization.
- Reduce the risk associated with a large-scale legacy migration.
The goal was not to rebuild the product from scratch. It was to modernize the platform carefully while preserving what already worked.
The Solution: Incremental Ruby on Rails Modernization
JetRuby designed the modernization around incremental changes rather than a single high-risk migration.
Instead of replacing the entire application at once, the team upgraded and validated the platform step by step. This made it possible to identify compatibility issues early, continuously test critical integrations, and reduce the operational risk of the final production cutover.
Upgrading Ruby and Rails
The core application stack was significantly modernized:
- Ruby 2.3 → Ruby 3.4.5
- Rails 4.2 → Rails 8
Moving across such a large version gap required more than changing version numbers. Legacy dependencies, application code, background processing, database interactions, and deployment workflows all had to be reviewed and adapted to work with the modern stack.
The incremental approach let the team validate each stage before moving to the next, reducing the risk of introducing multiple unknowns at once.
Migrating from MySQL to PostgreSQL
As part of the modernization, the team migrated the application’s database from MySQL to PostgreSQL.
The team treated the migration as a separate technical concern within the broader upgrade, allowing them to validate data integrity and application behavior independently.
This created a cleaner foundation for the modernized Rails application while preserving existing functionality and integrations.
Replacing Legacy Cron Jobs with Sidekiq and Redis
The legacy application relied on PHP cron jobs for background processing.
JetRuby replaced this approach with Sidekiq and Redis, bringing background job execution into the application’s modern Ruby-based architecture.
This reduced the number of disparate technologies needed to maintain the platform and provided a more consistent foundation for asynchronous processing.
Moving Assets to Cloud Storage
We replaced local file storage with DigitalOcean Spaces. Moving assets away from the application server helped separate application infrastructure from file storage and provided a more modern approach to handling website assets.
This was particularly relevant for a content-heavy website where images and other media are an important part of the user experience.
Giving the Muttville Team Control with Craft CMS
Technology modernization alone would not solve one of Muttville’s biggest operational pain points: routine content updates still required technical assistance.
JetRuby introduced Craft CMS to give the organization’s staff direct control over website content.
The CMS implementation included:
- Role-based access with Admin, Editor, and Publisher roles.
- Responsive previews for desktop, tablet, and mobile.
- Automatic image processing and optimization.
- Scheduled campaign banners.
- Reusable and centralized content management.
This changed the operational model.
Instead of sending routine requests to an external contractor, Muttville staff could manage day-to-day website content themselves.
The CMS therefore became more than a content-management upgrade. It removed a dependency between the organization’s communications workflow and engineering resources.
Strengthening Infrastructure and Security
The modernization also addressed the platform’s operational and security foundations.
JetRuby introduced:
- Automated deployments using GitHub Actions and Capistrano.
- Application monitoring with New Relic.
- Modern password hashing.
- Two-factor authentication for repository access.
- A zero-downtime production deployment process.
Together, these changes created a more controlled path from code changes to production and improved visibility into the application’s behavior after deployment.
For a legacy modernization project, this operational layer is just as important as the framework upgrade itself. A modern Rails version provides limited value if the application is still difficult to deploy, monitor, or maintain safely.
The Engineering Approach: Modernize Without a Rewrite
One key decision in the Muttville project was to avoid a complete rewrite. Rebuilding the application from scratch would have introduced unnecessary risk by requiring the team to recreate existing business logic and integrations while simultaneously changing the underlying technology.
Instead, JetRuby preserved the existing product and modernized its foundation incrementally, validating each stage before moving to the next and continuously testing critical integrations throughout.
The existing interface and user journeys were also intentionally preserved, making the modernization virtually invisible to website visitors. Behind the scenes, however, Muttville gained a modern technology stack, more reliable deployment practices, stronger monitoring, and significantly greater control over website content.
The Production Cutover: Zero Downtime
The team performed the final production migration without taking the website offline. This was one of the project’s most important requirements because the platform supports live adoption listings, donations, volunteer registrations, and other mission-critical activities.
The team successfully deployed the modernization to production on April 22, 2026.
The result was a successful transition from a decade-old Rails platform to a modern Rails 8 environment, with no service interruption for website visitors.
Business Results
The modernization delivered both technical and operational improvements.
Zero Downtime
The production cutover was completed without taking the website offline, keeping Muttville’s critical services available throughout the transition.
Zero Critical Incidents
No critical incidents have been reported since the modernized platform went live.
Independent Content Management
Muttville staff can now update website content directly through Craft CMS, rather than relying on an external contractor for routine changes.
40–50% Less Staff Time for Content Updates
According to the Muttville team, introducing Craft CMS is estimated to have reduced the time spent on content updates by approximately 40–50%.
“It’s hard to gauge the exact amount of time saved by introducing Craft CMS, but I’d venture to guess it’s reduced the amount of time by about 40–50%, since the Muttville staff is now able to make changes ourselves instead of waiting for our contractor.”
A More Maintainable Technology Foundation
The application now runs on modern Ruby and Rails versions, uses PostgreSQL, Sidekiq and Redis, cloud-based asset storage, automated deployments, and application monitoring.
Faster and Safer Operations
Routine maintenance no longer requires planned website interruptions, while automated deployment and monitoring provide a more reliable foundation for ongoing development.
Delivery Within the Planned Scope
The modernization was completed in approximately 8–10 weeks and within the planned budget.
The Technology Stack
Backend
- Ruby 3.4.5
- Ruby on Rails 8
- PostgreSQL
- Sidekiq
- Redis
Content Management
- Craft CMS
Infrastructure & DevOps
- DigitalOcean Spaces
- GitHub Actions
- Capistrano
- New Relic
Security
- Modern password hashing
- Two-factor authentication for repository access
Continuing the Partnership
The successful modernization was not the end of the relationship between Muttville and JetRuby.
JetRuby continues to provide ongoing support and maintenance for the platform.
The partnership has also moved toward the next stage of Muttville’s digital evolution. JetRuby has completed discovery and prepared a technical proposal for an AI-powered knowledge assistant that could help website visitors find information about adoption, fostering, hospice care, volunteering, and other Muttville services.
The client is currently reviewing the proposal.
Bottom Line
Muttville’s modernization shows that legacy Ruby on Rails applications don’t always need to be rewritten to become modern, maintainable, and easier to operate.
With the right migration strategy, an established application can be upgraded incrementally while preserving its existing user experience and business-critical integrations.
For Muttville, JetRuby modernized the platform from Ruby 2.3 and Rails 4.2 to Ruby 3.4.5 and Rails 8, migrated the database to PostgreSQL, introduced Sidekiq and Redis, implemented Craft CMS, strengthened security and observability, and completed the production cutover with zero downtime.
Most importantly, the modernization improved the technology behind the website without disrupting the people who depend on it.
That is what successful legacy modernization should look like: less technical debt, more operational control, and a safer foundation for the next stage of product development.




