Rails consulting

Ruby on Rails consultant for apps that have outgrown version one

I’m a Ruby on Rails consultant for teams whose app worked fine at launch and now doesn’t: pages that time out, Sidekiq queues that back up every Monday, a Rails version that’s fallen behind, or a codebase where every change breaks something else. I work in your repo, ship fixes, and leave the team able to carry on without me.

I built the full Rails stack behind Varsity Vibe, a student platform that reached 710,000 users across South African universities, including its real-time messaging on Postgres and Redis. I also built the Rails backend and Flutter apps for MyPerks, which was acquired.

What Ruby on Rails consulting with me covers

  • Performance. Finding the slow endpoints and the queries behind them, then fixing them in the right layer – query, index, cache or architecture.
  • Upgrades. Rails and Ruby versions brought current without a feature freeze. That has its own page: Rails upgrades.
  • Architecture. Breaking a tangled app into engines or domain modules, background job design, multi-tenancy, payments.
  • Technical leadership. Code review standards, a sane test suite, deploy pipeline and on-call – the things that make a Rails team fast again.

Rails performance: where the time actually goes

Rails apps rarely get slow because of Ruby. In my experience the time goes to the database and to work done in the request that shouldn’t be. The process I follow:

  1. Measure first. APM traces (Skylight, Scout, New Relic or OpenTelemetry) to rank endpoints by total time consumed, not by worst single request.
  2. Kill N+1 queries. The bullet gem in development, strict_loading on the models that matter, and includes or preload where the access pattern is known.
  3. Fix the database. pg_stat_statements to find the queries that cost the most in aggregate, EXPLAIN ANALYZE on each, then indexes, rewritten queries or counter caches. More in PostgreSQL performance tuning.
  4. Move work out of the request. Emails, PDF generation, third-party API calls and webhooks into Sidekiq or Solid Queue jobs that are idempotent and safe to retry.
  5. Cache deliberately. Russian-doll fragment caching with cache keys that include updated_at, and a clear answer to “what invalidates this?”. See caching strategy.

Rails architecture that scales with the team

The usual Rails failure isn’t technical scale – it’s organizational. Twenty engineers in one app/models folder with 300 models and callbacks that trigger other callbacks.

My default fix is a modular monolith rather than microservices: group code by domain, make the boundaries explicit (Packwerk is one tool for enforcing them), replace callback chains with plain service objects that are called on purpose, and keep one deployable app. You get most of the ownership benefits without the network calls. I go deeper in microservices vs monolith.

Background jobs and real-time features

Real-time messaging at Varsity Vibe taught me where Rails needs help and where it doesn’t. Most of the pain in growing Rails apps sits in the background job layer, not the web tier.

  • Idempotent jobs. Sidekiq retries failed jobs, so every job must be safe to run twice. Store an idempotency key or check state before acting – especially for anything that charges a card or sends an email.
  • Separate queues by urgency. One default queue means a bulk export can delay password-reset emails. Split critical, default and bulk queues and give each its own concurrency.
  • Watch queue latency, not queue size. The age of the oldest job is the number that tells you customers are waiting.
  • Action Cable needs its own capacity plan. Long-lived WebSocket connections behave differently from requests; run them on separate processes so a spike in connections can’t starve the web workers.

When to hire a Ruby on Rails developer instead

If your architecture is sound and you need more hands to build features, hire a Rails developer. It’s cheaper, and a good one will be productive in weeks.

Bring in a Rails consultant when the problem is judgement rather than capacity: a performance wall, an overdue upgrade, a rewrite proposal you’re unsure about, or a team that’s slowed down and can’t say why. I also maintain a few open-source Ruby gems, such as plugg and passw – small, but I know the ecosystem from the inside.

Questions

Is Ruby on Rails dead?

No. Rails ships major releases regularly, Rails 8 added Solid Queue, Solid Cache and Kamal to make self-hosting simpler, and large products like Shopify and GitHub still run on it. Hiring is narrower than for JavaScript or Python, but Rails remains one of the fastest ways to build a SaaS product.

What does a Ruby on Rails consultant do?

A Rails consultant diagnoses and fixes the problems a team can’t easily fix alone: performance under growth, version upgrades, architecture, and engineering practices. A good one works in your codebase and ships code, rather than handing over a report for someone else to implement.

Should we rewrite our Rails app in another language?

Almost never for performance reasons alone. Most slow Rails apps are slow because of queries, missing indexes and synchronous work, all of which can be fixed in place. Rewrites make sense for specific, isolated hot paths, not whole products.

Can you help us hire Rails developers?

Yes, as part of an engagement. I can write the job spec, design a practical interview based on your actual codebase, and sit in on technical interviews.

Rails app slowing your team down?

Tell me what’s hurting – speed, upgrades or the codebase itself. In a two-week sprint I’ll find the biggest cause and ship the first fix.

GMT+2 · Full EU overlap · US East mornings

Related