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.
Today
RedGem 0.3 (3D engine with ruby) is out!
This update brings bigger worlds, better visuals, and online multiplayer. Read more
parallel_matrix_formatter: one readable display for parallel RSpec runs
Running specs with parallel_tests or parallel_split_test gives you interleaved output from every process and a separate failure report per process. parallel_matrix_formatter is an RSpec formatter that sends results from all processes over a UNIX socket to process 1, which renders a single progress display and one consolidated failure report with rerun commands. It also silences stray stdout, keeps each process’s stderr in a log, and the progress display looks like Matrix digital rain. Version 0.2.0 is out: gem install parallel_matrix_formatter. Feedback from real suites is very welcome.
Asgard 0.5.0 adds dynamic task execution on file/directory changes
Asgard 0.5.0 adds a file watcher to the Ruby task runner. In a project’s .loki, watch :test, paths: %w[lib test], only: /\.rb\z/ declares which files a task cares about, and asgard watcher start runs one background process per project that reruns the task when they change. Read more
New release Truemail 🚀 configurable framework agnostic plain Ruby 📨 email validator
Meet new Truemail 4.0.0. This major release hardens MX validation against IDNA-mapped confusable/fullwidth domains. Spoofed Unicode domains are no longer treated as valid ASCII lookalikes.
Foreman or Docker Compose? The ideal local Rails setup in 2026
Native Procfile.dev or everything in docker-compose? This post argues for a hybrid: run web, css, js and workers natively via bin/dev, and keep only Postgres and Redis in a minimal compose file pinned to production versions. It covers why bind mounts slow Rails down on macOS, the Postgres 18 volume path change, OrbStack vs Docker Desktop memory usage, when a devcontainer still wins, and dropping Redis in dev with Solid Queue.
A new version of bidi2pdf is out
The highlight of this release is built-in support for Claude Code skills. The repository now includes a Claude Code plugin with skills that help AI agents generate PDFs, troubleshoot rendering issues, and work with Chrome through WebDriver BiDi. Read more
ruby_llm-providers-lms v0.3.0 with decisions API released
ruby_llm-providers-lms 0.3.0 brings RubyLLM 2.1’s judgments to LM Studio. Point RubyLLM.judge or a RubyLLM::Judge class at a local decision model and get typed answers back in tens of milliseconds: a probability that something is true, a choice from a fixed set with a confidence, or a score on an ordered scale, with no text to parse and nothing generated. Read more
Standard Ruby on Apple Silicon and Docker: one linter, two runners
Standard is RuboCop with an unconfigurable ruleset, and that removes a whole category of style debates from code review. The post covers what it gives you (--fix, --generate-todo, plugins like standard-rails, the Ruby LSP add-on) and how it layers its config on top of RuboCop, first-in-wins. Read more
Fat Rails Models Might Be a Domain Modeling Problem (Kaigi on Rails 2026)
Fat Rails models aren’t always a sign that we need another architectural layer. Sometimes, we’re missing a domain concept. I explored this idea in a talk at Kaigi on Rails 2026. Read more
llm.rb v17.0.0 released!
llm.rb is an agentic runtime for building AI applications on CRuby. It supports 14 different providers, it has zero runtime dependencies by default, and it can execute tool calls on their own process, thread, Async::Reactor, or Ractor. It can reliably interrupt an agent running in the same process but a different thread or fiber, too. Plus much more. Check it out if that sounds like your thing :)
Upgrading a Rails app from Ruby 3.4.4 to 4.0.3: what actually breaks
Ruby 4.0 is the first major bump in over a decade, but a Rails 8.x app usually upgrades in a day of focused work. Most of the pain is not in the language: it is gems that left the default set (cgi, ostruct, logger, benchmark), the Ractor::Port rewrite, Kernel#open("| cmd") no longer spawning a process, and a handful of changes that break tests rather than code (Set#inspect output, Net::HTTP no longer defaulting Content-Type on bodies, new backtrace frames that confuse Sentry/Datadog grouping rules). Read more
Gravity Defied, the old fashion motorbike game, rebuilt with pure Ruby physics
Remember Gravity Defied, the motorbike game from old Nokia phones? I rebuilt it on DragonRuby GTK with the physics written in pure Ruby: no physics engine, just six point masses joined by springs and 16.16 fixed-point math. Thanks to WebAssembly, you can play it right in the browser with all 30 original tracks. Since every run is deterministic, a small beam-search bot finds clean runs offline, and the game replays them frame for frame
Ruby Memes 2026-10-15: Pencils Down!
Ruby Memes 2026-10-15: Pencils Down!
SolidJobs + SolidTrace + Warm IPC perform worker 2000 alloc/s vs 200 alloc/s sidekiq
We are told that to scale Ruby background workloads across multiple CPU cores, we have two choices: process forking (e.g., Pitchfork) which incurs massive Copy-on-Write memory overhead and risk of OOM kills under load, or database-backed queues (e.g., Solid Queue) which introduce heavy synchronous disk I/O and row-locking bottlenecks [1.8, 1.10]. To break this cycle, I built SolidJobs (v0.5.0): an open-source, Ractor-local Redis task runtime engineered from scratch around a strict shared-nothing architecture [1.8]. Read more
Rails engines: a gem that lives inside your app
How to build a feature as a Rails engine in a folder of the main app, loaded as a path gem. Covers isolate_namespace, appending the engine’s migrations to the host instead of copying them, a single lambda hook for auth so the engine never depends on the host, and where engines hurt (specs, Zeitwerk, schema visibility). Real code from a short-link and click-tracking feature. Read more
What Is Service Virtualization: Definition, Types & Tools
Learn what service virtualization is, how it works, its types and benefits, and compare testing approaches that simulate APIs, databases, and external services without live dependencies.
We CanCanCan fix everything
I released a new version of CanCanCan! 3.7.0 is here! Read more
Rails World '26: Rails in the Agentic Era
When I attended Rails World, this is the kind of talk I was interested in: What does the future of Rails look like at scale? How are big corporations using AI agents in a way that keeps humans in the loop? How do the Ruby and Rails ecosystems support AI-driven development workflows? Read more
A practical guide to AI in Rails with RubyLLM: structured text, tools, images
I wrote up the code behind the AI-generated cover images on my blog: a text model summarizes a post, an image model draws the summary, and Active Storage keeps the result. AI with Ruby and Rails: A Practical Guide with RubyLLM goes through it in nine steps with RubyLLM 2.1 and Gemini: a service object for the first call, structured output with with_schema, tool calling, RubyLLM.paint, and moving generation to a background job before Kamal’s proxy times out. It also covers rescuing provider errors and catching the content-filtered reply that comes back empty without raising. The last steps treat user content as data rather than instructions and test without touching the network.
When a database restore signs you in as someone else
Rails 8’s authentication generator mixes up users after a database restore: cookies that were already in browsers start resolving to other people’s sessions. Write-up with a comic, a demo that runs in your browser, and a PR with the fix:
New release of actual_db_schema
Long time no see, guys. I’ve just released actual_db_schema gem v0.10.0. Read more
The Smart Rubyist #1: I prefer to be in top 10% devs who train AI with new ideas
The Smart Rubyist #1: I prefer to be in the top 10% developers who train AI with new ideas
Kill SSH on ECS: get a Rails console via ECS Exec with Terraform
Still keeping port 22 open and a key pair in your launch template just so someone can run rails console in staging? This guide walks through replacing SSH with AWS SSM Session Manager and ECS Exec using Terraform. It covers IAM for instance and task roles, VPC endpoints for private subnets, exec logging, rolling it out through CI, and the gotchas that eat the most time: tasks that predate enable_execute_command, log groups created by hand, and TargetNotConnectedException. It ends with a troubleshooting table and a checklist for production.