Submit a post
Post Preview
Note: Only the first pargraph is shown on the front page and overly long paragraphs may be broken up.
Today
Chat Modes: Configuring the LLM for Each Turn
RubyLLM::Modes is an extension for RubyLLM: before each chat turn, a router picks the instructions, tools, model, and thinking for that reply. The router uses Jev through the new RubyLLM.judge: about 350 ms and $0.04 per 1,000 turns. [more inside]
The Job Was Enqueued by Older Code
What happens to queued Active Job payloads after a job-class rename? A runnable Rails 8.1.3 exploration of class lookup, exception handling, compatible rolling deploys, and when the old class can be removed. [more inside]
I agree with DHH and here is why ...
I’ve seen this pattern many times in my 55 years as a computer programmer. p(bloom) has always been greater than p(doom) [more inside]
asgard v0.4.0 now supports scheduling periodic tasks
Creating tasks to support your development workflow has always been an easy thing to do with the Thor-based asgard ruby gem with its Loki files defining your tasks and their dependencies. asgard’s two big features are its ability to run dependencies to a task either serially or concurrently or a mix of both before running the target task. Now you can create a new category of tasks that run periodically using the new schedule keyword in your loki files. [more inside]
llm_cost_tracker 0.14.1: RubyLLM 2.x, long streams, transaction-safe writes
llm_cost_tracker is self-hosted LLM cost tracking for Rails: every call through RubyLLM, the OpenAI and Anthropic SDKs, Gemini, or any OpenAI-compatible API is logged with tokens, cost, and tags, with no proxy. 0.14.1 is a bug-fix release: [more inside]
Smart avatar cropping in rails: face detection with YuNet, ONNX and ActiveStorage
Learn how to implement CPU-efficient, face-aware avatar cropping in Ruby on Rails without external APIs or Python sidecars. [more inside]
Ruby, Rails & AI Daily: DHH Goes "Pencils Down" at Rails World as Agents Keep Jumping
DHH opened Rails World 2026 by announcing that 37signals has stopped writing routine code by hand, with HEY being rebuilt as six native apps plus a Rust mail backend, and a call for every app to ship a CLI so users can bring their own agent. The roundup also covers Day 1 talks on Active Search, Lexxy and hardening Active Storage, the Agents on Rails max-effort report where DeepSeek 4.1 Flash found the harness API key and used it to pull Fizzy’s source from GitHub, the OpenAI agent that breached an Australian Medicare portal, and Ruby 3.4.11. It closes with three practical guardrails for Rails teams running coding agents: keep provider keys out of the sandbox, default-deny egress, and grade outcomes the agent cannot rewrite.
Active Storage image optimization at scale: lessons from 1,916 conference photos
We replaced a hosted gallery with a Rails 8.1 app on one box for Friendly.rb, then open sourced it. Nine Active Storage derivatives per photo, AVIF measured 31.6% under WebP, and the things the guides do not warn you about past a few dozen images. Read the full article on:
[ANN] New bidi2pdf release: faster PDF generation + agent-friendly CLI
A new version of bidi2pdf is out. [more inside]
Rails Has .forty_two — But No .sixth
A short look at one of Rails’ weirdest little helpers and its history. [more inside]
Voice control for your Ruby on Rails app
- wanna use Jev AI to control your Ruby on Rails app with voice? Easy! [more inside]
Amazing Print v3.0.0
Amazing Print, the maintained fork of the popular Awesome Print gem to enhance the pretty-printing of Ruby objects, has been updated to version 3. It works with the next version of Rails (8.2, or 9, or whatever the next version number will be). If you are still using Awesome Print, you will want to migrate to Amazing Print v3 as part of your next Rails upgrade, or your app will crash on boot!
Thankfully it should be a drop-in replacement, since the coloring default behavior has been updated to be closer to Amazing Print’s defaults. A new colors option has been introduced for further tweaking.
Pro-tip: are you migrating from Awesome Print and missing the old-school hash rocket visual style? Add AmazingPrint.defaults = { hash_format: :rocket } to your ~/.irbrc or ~/.pryrc.
Beskar 0.2: Rails security with coordinated rate limits and session revocation
I’ve released Beskar 0.2.0, an MIT-licensed security engine for Rails 8+. It combines authentication rate limits, scanner detection, configurable account locks, persistent IP bans, and a mountable security dashboard. This release moves enforcement state into the shared database, coordinates limits across application workers without requiring Redis, and adds durable session revocation. [more inside]
I made a Jev gem with an API that feels like it belongs in Ruby
I released jev-feels, a small Ruby/Rails gem for semantic predicates powered by Jev [more inside]
Your Transaction Committed. Did the Job Reach the Queue?
A source-backed trace of deferred Active Job enqueueing, why a Solid Queue failure can arrive after the application transaction commits, and when shared storage or an outbox changes the guarantee. [more inside]
Bootstrap Helpers are back
After 800 ⭐️ on GitHub for the previous version, here are the helpers for Bootstrap 6 (currently in alpha). Stop typing lines of HTML and CSS! Add components like OTP, dialogs, toasts with a single line of HTML. [more inside]
Vessel 0.3.0 is here (and is completely redone)
Ruby is getting a new release of Vessel, Ruby alternative to Python popular Scrapy project.
The Embarrassing Ruby/Rails Community Chronicles 2026-09-17
The life of a Ruby dev in 2026! I made an effort to post a recorded talk that I gave at my local Montreal Ruby meetup as a helpful gesture for the benefit of the Ruby community at large…
Montreal.rb February 2026 Crystal: Ruby with Static Typing
The video and slides for the Montreal.rb February 2026 talk “Crystal: Ruby with Static Typing” have been published! The real exciting bit to any real Rubyist is that Crystal has similar syntax to Ruby’s and similar performance to that of C/C++/Rust. That is extremely exciting and awesome!!! It means Rubyists don’t have to struggle through C or Rust’s syntax to get performance enhancement as they have a much more elegant option in Crystal.
RippleEffect: static change-impact analysis for Rails
I built RippleEffect, a Ruby gem for figuring out what a Rails change might affect before you refactor. [more inside]
Rails Hyperdrive: supercharged agentic development for Rails
Shipping skills could soon mean as much as READMEs. As AI writes more, libraries that teach agents to correctly use their APIs will win. Rails Hyperdrive lets gems distribute agent guidance, and getting started just takes Markdown files and a gemspec metadata entry. [more inside]
Coldwire: offline support for Rails, Hotwire, and Hotwire Native
We build Rails apps and needed one to work with no network - our client’s users are out on islands off the Maine coast with no cell service. Hotwire doesn’t ship with anything for this, and a naive service worker breaks once Turbo is handling navigation. So we built a service worker plus precache manifest, a fallback page Turbo will actually render, and a settings screen where users can force a sync before heading out and inspect what’s cached. It’s been in production for a while, so we extracted it into a gem. [more inside]