Engineering Guide

The Rails Performance Checklist

Don't let your application die of success. A prioritized list of optimizations for production Rails systems.

1. The Database Layer

80% of performance issues live here. Before you touch Ruby optimizations, ensure your SQL is healthy.

Missing Indexes

Identify slow queries using `pg_stat_statements` or tools like PgHero. Add indexes to foreign keys and columns frequently used in WHERE clauses.

The N+1 Problem

Use the `bullet` gem in development to catch these. Eager load associations using `.includes`, `.preload`, or `.eager_load`.

Select (*) is Evil

Don't load huge text/json columns if you don't need them. Use `.select(:id, :title)` to reduce memory bloat.

2. Ruby & Memory

Ruby is fast enough if you don't allocate thousands of objects per request.

Jemalloc

If you aren't using `jemalloc` with Ruby, you are wasting 30% of your memory. It reduces fragmentation significantly.

Frozen String Literals

Add `# frozen_string_literal: true` to the top of your files to prevent unnecessary string allocations.

3. Background Jobs (Sidekiq)

Move everything you can out of the request cycle.

Idempotency

Jobs will fail and retry. Ensure your jobs can run multiple times without corrupting data.

Argument Size

Don't pass full ActiveRecord objects to jobs. Pass IDs and reload them inside the job (Sidekiq best practice).

Need help applying this?

I can run a deep-dive audit on your application and implement these fixes for you. Stop guessing and start scaling.

View Performance Audit Services