The Ruby and Rails community linklog
Made a library? Written a blog post? Found a useful tutorial? Share it with the Ruby community here or just enjoy what everyone else has found!
Submit a post
Post Preview
Note: Only the first pargraph is shown on the front page and overly long paragraphs may be broken up.
Yesterday
sghtmltopdf: an HTML to PDF renderer in Rust, with a Ruby gem and Rails integration
wkhtmltopdf was archived in 2023, leaving Rails apps stuck between an unmaintained binary and spawning headless Chrome. I built sghtmltopdf, a new rendering engine written in Rust that implements CSS Fragmentation and @page directly, so page breaks, orphans and widows are first-class rather than approximated. It ships as a CLI, an HTTP server, and a Ruby gem (gem "sghtmltopdf"). [more inside]
What Active Record Transactions Actually Protect
An Active Record transaction traced across one database connection, retained model state, remote side effects, false returns, non-local exits, nested transactions, savepoints, and PostgreSQL statement failures. [more inside]
Solid Objects: Easiest reactive ERB there has ever been
I’ve been building Solid Objects, a gem that brings the Durable Objects programming model (addressable objects, durable state, serialized turns) to ordinary Rails applications. It runs on the MySQL, PostgreSQL, or SQLite database the app already has. No Redis, no Cloudflare account, no separate actor service. [more inside]
Ruby 2D v1.0 released
Years in the making, rebuilt from the ground up, tons of new features, full WebAssembly support, a new website with live examples. Check it out! https://github.com/ruby2d/ruby2d [more inside]
Turbo Drive, Frames and Streams: a reference verified against the source
Turbo’s documentation is complete but unconnected: Drive, Frames and Streams sit side by side with nothing saying what links them or how to choose. This is the reference I wanted when I started, written by reading the source of Turbo 8.0.23 and turbo-rails 2.0.23 rather than the docs, because that is where the gaps are. [more inside]
The Shopify Goldmine: How to Build Your First App in Rails
From Rails Dev to Shopify Partner: A Beginner’s Guide to Building Apps If you know Ruby on… [more inside]
From Conditionals to Polymorphism
A conditional that keeps growing is a design problem, not a style problem. How to turn each branch into an object, one green step at a time. [more inside]
Running a Ruby MCP Server in Production
In this article, Amanda goes through what a Ruby MCP server needs once it stops being a subprocess: Streamable HTTP instead of stdio, a choice between a standalone service and an endpoint inside an existing Rails app, statelessness so it survives more than one Puma worker, Host and Origin validation that a security advisory made mandatory, a shared token as the internal floor with OAuth as the answer beyond it, and read-only models and server_context deciding what any caller can actually reach. [more inside]
Install any Ruby version in seconds using rv
In this guide, you’ll learn how to use rv, a very fast version and package manager for Ruby to get started in minutes instead of hours:
wurk: Sidekiq Pro and Enterprise features, MIT licensed
wurk is a drop-in, 100% API-compatible replacement for Sidekiq that ships the Pro and Enterprise features Batches, unique jobs, rate limiting, periodic jobs, encrypted arguments under MIT. Swap the gem, keep your existing perform_async calls and your Redis. [more inside]
Wide Events: Token-efficient Rails telemetry for coding agents
I released Wide Events, a Rails gem that records each request or job execution as one dense, high-cardinality telemetry event. It gives coding agents queryable production context without making them reconstruct what happened from scattered logs, spans, and metrics. Agents can retrieve only the relevant rows and fields for a route, account, build SHA, feature flag, or error, keeping the context compact. [more inside]
Function Calling
In this episode, we look at adding function calling or tool use to our Rails application when making generative text LLM requests.
Ruby and Rails investigations
Curated Ruby and Rails investigations on application design, performance, concurrency, databases, deployment, assets and maintainability. [more inside]
Multiple named cache stores for Rails, through Rails.cache(:name)
An easy way to organize your different caches. A familiar API. Production-ready, and actually in use in production to cache small numbers (when accuracy of 30 second is acceptable) in memory. [more inside]
What Happens When You Call save
An Active Record save traced from pending dirty state through validations, callbacks, persistence, and its transaction wrapper. It explains false returns with empty errors, validate: false, callback-chain inspection, successful no-op saves, and why a failed inner save can leave other work committed. RailsRevelry publishes one source-backed Rails mental model each week. [more inside]
Ruby Memes 2026-07-30: One Bad Monkey Spoils The Bunch
Ruby Memes 2026-07-30: One Bad Monkey Spoils The Bunch
Courrier: a Ruby gem to send emails without SMTP
Gem to send email via API, not STMP https://railsdesigner.com/new-rails-courrier/ [more inside]
Why Active Record’s Snapshot Semantics Are a Trade-off, Not a Missing Feature
Active Record objects hold the database-derived state they loaded; they do not stay synchronized when another process changes the row. I built four small, reproducible experiments covering stale reads, lost updates, optimistic locking, and association-cache staleness, then looked at Rails’ abandoned Identity Map and what genuinely live objects would require. [more inside]
Tracking LLM Latency & Cost with Rails Events
Wiring an LLM into a Rails app takes a handful of lines. Understanding what it actually costs you (feature by feature, user by user) is harder. [more inside]
error_track: Drop-in Rails error dashboard with zero external services
Sentry and Honeybadger are great — until you don’t want another vendor, another bill, or exception data leaving your infrastructure. [more inside]
Why is Ruby on Rails a great fit for AI agents
I wrote a longer post on why I believe Rails is a great fit for AI agents