<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>RubyFlow</title>
    <description>The Ruby and Rails community linklog</description>
    <link>https://rubyflow.com</link>
    <atom:link href="https://rubyflow.com/rss" rel="self" type="application/rss+xml"/>
    <item>
      <title>Ruby Memes 2026-10-15: Pencils Down!</title>
      <description>Ruby Memes 2026-10-15: Pencils Down! &lt;a href="https://andymaleh.blogspot.com/2026/10/ruby-memes-2026-10-15-pencils-down.html" rel="nofollow"&gt;https://andymaleh.blogspot.com/2026/10/ruby-memes-2026-10-15-pencils-down.html&lt;/a&gt;</description>
      <pubDate>Thu, 15 Oct 2026 17:02:54 +0000</pubDate>
      <link>https://rubyflow.com/p/v2scu4-ruby-memes-2026-10-15-pencils-down</link>
      <guid>https://rubyflow.com/p/v2scu4-ruby-memes-2026-10-15-pencils-down</guid>
    </item>
    <item>
      <title>SolidJobs + SolidTrace + Warm IPC perform worker 2000 alloc/s vs 200 alloc/s sidekiq</title>
      <description>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].</description>
      <pubDate>Thu, 15 Oct 2026 08:17:21 +0000</pubDate>
      <link>https://rubyflow.com/p/6nuf6l-solidjobs-solidtrace-warm-ipc-perform-worker-2000-allocs-vs-200-allocs-sidekiq</link>
      <guid>https://rubyflow.com/p/6nuf6l-solidjobs-solidtrace-warm-ipc-perform-worker-2000-allocs-vs-200-allocs-sidekiq</guid>
    </item>
    <item>
      <title>Rails engines: a gem that lives inside your app</title>
      <description>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.</description>
      <pubDate>Wed, 14 Oct 2026 21:05:50 +0000</pubDate>
      <link>https://rubyflow.com/p/62a1sk-rails-engines-a-gem-that-lives-inside-your-app</link>
      <guid>https://rubyflow.com/p/62a1sk-rails-engines-a-gem-that-lives-inside-your-app</guid>
    </item>
    <item>
      <title>What Is Service Virtualization: Definition, Types &amp; Tools</title>
      <description>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.
&lt;a href="https://keploy.io/blog/community/service-virtualization" rel="nofollow"&gt;https://keploy.io/blog/community/service-virtualization&lt;/a&gt;</description>
      <pubDate>Wed, 14 Oct 2026 19:14:11 +0000</pubDate>
      <link>https://rubyflow.com/p/al1qaf-what-is-service-virtualization-definition-types-tools</link>
      <guid>https://rubyflow.com/p/al1qaf-what-is-service-virtualization-definition-types-tools</guid>
    </item>
    <item>
      <title>Threads, Ractors and Fibers in Ruby 4: what I learned by measuring</title>
      <description>&lt;a href="https://amalrik.github.io/posts/ruby-4-threads-ractors-fibers/" rel="nofollow"&gt;https://amalrik.github.io/posts/ruby-4-threads-ractors-fibers/&lt;/a&gt;</description>
      <pubDate>Wed, 14 Oct 2026 17:02:47 +0000</pubDate>
      <link>https://rubyflow.com/p/tzdcvs-threads-ractors-and-fibers-in-ruby-4-what-i-learned-by-measuring</link>
      <guid>https://rubyflow.com/p/tzdcvs-threads-ractors-and-fibers-in-ruby-4-what-i-learned-by-measuring</guid>
    </item>
    <item>
      <title>We CanCanCan fix everything</title>
      <description>I released a new version of CanCanCan! 3.7.0 is here!</description>
      <pubDate>Wed, 14 Oct 2026 09:56:12 +0000</pubDate>
      <link>https://rubyflow.com/p/1r65pw-we-cancancan-fix-everything</link>
      <guid>https://rubyflow.com/p/1r65pw-we-cancancan-fix-everything</guid>
    </item>
    <item>
      <title>Rails World '26: Rails in the Agentic Era</title>
      <description>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?</description>
      <pubDate>Wed, 14 Oct 2026 00:40:09 +0000</pubDate>
      <link>https://rubyflow.com/p/8sy4pc-rails-world-26-rails-in-the-agentic-era</link>
      <guid>https://rubyflow.com/p/8sy4pc-rails-world-26-rails-in-the-agentic-era</guid>
    </item>
    <item>
      <title>A practical guide to AI in Rails with RubyLLM: structured text, tools, images</title>
      <description>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. &lt;a href="https://rubyinsights.blog/en/blog/ai-with-ruby-and-rails-a-practical-guide-with-rubyllm" rel="nofollow"&gt;AI with Ruby and Rails: A Practical Guide with RubyLLM&lt;/a&gt; goes through it in nine steps with RubyLLM 2.1 and Gemini: a service object for the first call, structured output with &lt;code&gt;with_schema&lt;/code&gt;, tool calling, &lt;code&gt;RubyLLM.paint&lt;/code&gt;, 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.</description>
      <pubDate>Tue, 13 Oct 2026 15:26:47 +0000</pubDate>
      <link>https://rubyflow.com/p/f62nrc-a-practical-guide-to-ai-in-rails-with-rubyllm-structured-text-tools-images</link>
      <guid>https://rubyflow.com/p/f62nrc-a-practical-guide-to-ai-in-rails-with-rubyllm-structured-text-tools-images</guid>
    </item>
    <item>
      <title>When a database restore signs you in as someone else</title>
      <description>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:
&lt;a href="https://msg.samsonov.io/2026-09-30-when-a-database-restore-signs-you-in-as-someone-else/" rel="nofollow"&gt;https://msg.samsonov.io/2026-09-30-when-a-database-restore-signs-you-in-as-someone-else/&lt;/a&gt;</description>
      <pubDate>Tue, 13 Oct 2026 11:54:04 +0000</pubDate>
      <link>https://rubyflow.com/p/szj4kw-when-a-database-restore-signs-you-in-as-someone-else</link>
      <guid>https://rubyflow.com/p/szj4kw-when-a-database-restore-signs-you-in-as-someone-else</guid>
    </item>
    <item>
      <title>New release of actual_db_schema</title>
      <description>Long time no see, guys. I’ve just released &lt;a href="https://github.com/widefix/actual_db_schema" rel="nofollow"&gt;actual_db_schema&lt;/a&gt; gem v0.10.0.</description>
      <pubDate>Tue, 13 Oct 2026 09:47:06 +0000</pubDate>
      <link>https://rubyflow.com/p/3j60gc-new-release-of-actualdbschema</link>
      <guid>https://rubyflow.com/p/3j60gc-new-release-of-actualdbschema</guid>
    </item>
    <item>
      <title>The Smart Rubyist #1: I prefer to be in top 10% devs who train AI with new ideas</title>
      <description>The Smart Rubyist #1: I prefer to be in the top 10% developers who train AI with new ideas
&lt;a href="https://x.com/AndyObtiva/status/2109689588474163310?s=20" rel="nofollow"&gt;https://x.com/AndyObtiva/status/2109689588474163310?s=20&lt;/a&gt;</description>
      <pubDate>Tue, 13 Oct 2026 01:32:54 +0000</pubDate>
      <link>https://rubyflow.com/p/y3a9fi-the-smart-rubyist-1-i-prefer-to-be-in-top-10-devs-who-train-ai-with-new-ideas</link>
      <guid>https://rubyflow.com/p/y3a9fi-the-smart-rubyist-1-i-prefer-to-be-in-top-10-devs-who-train-ai-with-new-ideas</guid>
    </item>
    <item>
      <title>Kill SSH on ECS: get a Rails console via ECS Exec with Terraform</title>
      <description>Still keeping port 22 open and a key pair in your launch template just so someone can run &lt;code&gt;rails console&lt;/code&gt; in staging? &lt;a href="https://rubyinsights.blog/en/blog/ssm-session-manager-ecs-exec-terraform" rel="nofollow"&gt;This guide&lt;/a&gt; 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 &lt;code&gt;enable_execute_command&lt;/code&gt;, log groups created by hand, and &lt;code&gt;TargetNotConnectedException&lt;/code&gt;. It ends with a troubleshooting table and a checklist for production.</description>
      <pubDate>Mon, 12 Oct 2026 20:59:54 +0000</pubDate>
      <link>https://rubyflow.com/p/p5n7ki-kill-ssh-on-ecs-get-a-rails-console-via-ecs-exec-with-terraform</link>
      <guid>https://rubyflow.com/p/p5n7ki-kill-ssh-on-ecs-get-a-rails-console-via-ecs-exec-with-terraform</guid>
    </item>
    <item>
      <title>I've made a experimental 3d engine that uses mruby</title>
      <description>I’ve been building a small 3D game engine using mruby: &lt;a href="https://github.com/carlosdanielpohlod/redgem" rel="nofollow"&gt;https://github.com/carlosdanielpohlod/redgem&lt;/a&gt;
The engine is written in C++, but I wanted Ruby to be the main way to build games with it. It has physics, a 3D editor, Blender level import, and a few other things.
It’s still a work in progress, and I used AI quite a lot to help build it. There’s definitely room for improvement, but I thought it would be interesting to share it with the mruby community.</description>
      <pubDate>Mon, 12 Oct 2026 19:52:16 +0000</pubDate>
      <link>https://rubyflow.com/p/5ikcaq-ive-made-a-experimental-3d-engine-that-uses-mruby</link>
      <guid>https://rubyflow.com/p/5ikcaq-ive-made-a-experimental-3d-engine-that-uses-mruby</guid>
    </item>
    <item>
      <title>DHH, AI, and the Future of Rails</title>
      <description>I was in the audience in Austin when DHH opened Rails World 2026. The conference tagline was “Shaping the future of Ruby on Rails,” so I walked in expecting to hear about the future of Rails.</description>
      <pubDate>Mon, 12 Oct 2026 18:30:26 +0000</pubDate>
      <link>https://rubyflow.com/p/8uejzz-dhh-ai-and-the-future-of-rails</link>
      <guid>https://rubyflow.com/p/8uejzz-dhh-ai-and-the-future-of-rails</guid>
    </item>
    <item>
      <title>introducing runsheets, an executable runbook</title>
      <description>&lt;a href="https://github.com/madbomber/runsheets" rel="nofollow"&gt;runsheets&lt;/a&gt; is a Ruby gem that serves markdown runbooks as a local web page. Fenced code blocks you mark as runnable get a Run button. Every run is written to a “runsheet” (aka session log) that records each command exactly as it ran, its output, its exit status and timing, and each time the operator signs off on a manual step. Secret inputs are redacted from the output, and a destructive block won’t run until the operator types a confirmation code. &lt;code&gt;runsheets --check&lt;/code&gt; lints a runbook, &lt;code&gt;--new&lt;/code&gt; builds one from templates, and &lt;code&gt;--run&lt;/code&gt; runs a single step from the terminal. It’s a proof of concept, and I’d like feedback from people who use runbooks every day. Install it with &lt;code&gt;gem install runsheets&lt;/code&gt; (it needs Ruby 3.4 or newer), and see the &lt;a href="https://madbomber.github.io/runsheets" rel="nofollow"&gt;docs&lt;/a&gt; for more.</description>
      <pubDate>Mon, 12 Oct 2026 04:30:11 +0000</pubDate>
      <link>https://rubyflow.com/p/wrgc47-introducing-runsheets-an-executable-runbook</link>
      <guid>https://rubyflow.com/p/wrgc47-introducing-runsheets-an-executable-runbook</guid>
    </item>
    <item>
      <title>LLMCostTracker 0.15.0: per-run budgets for agents, RubyLLM 2.1, more providers</title>
      <description>&lt;a href="https://github.com/sergey-homenko/llm_cost_tracker" rel="nofollow"&gt;LLMCostTracker&lt;/a&gt; records the LLM calls your Rails app makes through RubyLLM, the official OpenAI and Anthropic SDKs or Faraday into your own database: priced per call, tagged by user, feature or any tag, with budgets and a dashboard. No proxy, no prompts stored.</description>
      <pubDate>Sun, 11 Oct 2026 06:01:35 +0000</pubDate>
      <link>https://rubyflow.com/p/2nylju-llmcosttracker-0150-per-run-budgets-for-agents-rubyllm-21-more-providers</link>
      <guid>https://rubyflow.com/p/2nylju-llmcosttracker-0150-per-run-budgets-for-agents-rubyllm-21-more-providers</guid>
    </item>
    <item>
      <title>Deploying a Rails 8 App to a VPS with Kamal 2: A Practical Guide</title>
      <description>A start-to-finish walkthrough of &lt;a rel="nofollow"&gt;shipping a Rails 8 app to a single VPS with Kamal 2&lt;/a&gt;, using Vite, Solid Queue, PostgreSQL as a Kamal accessory and Docker Hub. It focuses on the errors you will probably hit: a Dockerfile with no Node.js, a database.yml that falls back to localhost, &lt;code&gt;SOLID_QUEUE_IN_PUMA=false&lt;/code&gt; turning the Puma plugin on, uncommitted changes that Kamal never builds, and Let’s Encrypt failing on DNS. It ends with what Kamal leaves to you: backups, HA and Postgres major upgrades.</description>
      <pubDate>Sat, 10 Oct 2026 23:09:13 +0000</pubDate>
      <link>https://rubyflow.com/p/sts2rk-deploying-a-rails-8-app-to-a-vps-with-kamal-2-a-practical-guide</link>
      <guid>https://rubyflow.com/p/sts2rk-deploying-a-rails-8-app-to-a-vps-with-kamal-2-a-practical-guide</guid>
    </item>
    <item>
      <title>Ruby implementation of scrap: scrap4rb </title>
      <description>While searching for quality I found scrap. SCRAP is by Robert C. Martin (Uncle Bob): &lt;a href="https://github.com/unclebob/scrap" rel="nofollow"&gt;github.com/unclebob/scrap&lt;/a&gt;. The algorithm, the metrics, the smells and the policy numbers in scrap4rb come from SCRAP. scrap4rb is a Ruby implementation. It contains no SCRAP source code. Link to repo: &lt;a href="https://github.com/roberthopman/scrap4rb" rel="nofollow"&gt;https://github.com/roberthopman/scrap4rb&lt;/a&gt;
Link to post: &lt;a href="https://roberthopman.com/scrap4rb-find-the-messy-tests/" rel="nofollow"&gt;https://roberthopman.com/scrap4rb-find-the-messy-tests/&lt;/a&gt;</description>
      <pubDate>Sat, 10 Oct 2026 13:53:58 +0000</pubDate>
      <link>https://rubyflow.com/p/g5473j-ruby-implementation-of-scrap-scrap4rb-</link>
      <guid>https://rubyflow.com/p/g5473j-ruby-implementation-of-scrap-scrap4rb-</guid>
    </item>
    <item>
      <title>Farce 0.1.0: A new library for working with Ractors and Fiber Schedulers</title>
      <description>&lt;a href="https://github.com/rkh/farce" rel="nofollow"&gt;Farce&lt;/a&gt; is a new library for Ractor-shareable, Fiber Scheduler-compatible, concurrent data structures, with support for software transactional memory and a concurrency-model agnostic scheduling API.</description>
      <pubDate>Sat, 10 Oct 2026 09:19:27 +0000</pubDate>
      <link>https://rubyflow.com/p/92kfua-farce-010-a-new-library-for-working-with-ractors-and-fiber-schedulers</link>
      <guid>https://rubyflow.com/p/92kfua-farce-010-a-new-library-for-working-with-ractors-and-fiber-schedulers</guid>
    </item>
    <item>
      <title>Workhorse, a durable PostgreSQL task queue for Ruby and Rust</title>
      <description>&lt;a href="https://workhorse.run" rel="nofollow"&gt;Workhorse&lt;/a&gt; keeps your background jobs in PostgreSQL and runs them in Ruby, TypeScript, Python, Go and Rust.</description>
      <pubDate>Sat, 10 Oct 2026 02:08:42 +0000</pubDate>
      <link>https://rubyflow.com/p/ud8lsu-workhorse-a-durable-postgresql-task-queue-for-ruby-and-rust</link>
      <guid>https://rubyflow.com/p/ud8lsu-workhorse-a-durable-postgresql-task-queue-for-ruby-and-rust</guid>
    </item>
    <item>
      <title>What Should Go in AGENTS.md for a Rails App?</title>
      <description>After working with agents and agent files for tons of apps, repos, projects, I decided to distill my thoughts on it:</description>
      <pubDate>Fri, 09 Oct 2026 19:23:43 +0000</pubDate>
      <link>https://rubyflow.com/p/5xghu4-what-should-go-in-agentsmd-for-a-rails-app</link>
      <guid>https://rubyflow.com/p/5xghu4-what-should-go-in-agentsmd-for-a-rails-app</guid>
    </item>
    <item>
      <title>rails-preflight: what stands between your Rails app and the next version</title>
      <description>I just released a gem that answers one question about a Rails app: what stands between it and Rails X?</description>
      <pubDate>Fri, 09 Oct 2026 18:15:27 +0000</pubDate>
      <link>https://rubyflow.com/p/80q67e-a-preflight-you-can-run</link>
      <guid>https://rubyflow.com/p/80q67e-a-preflight-you-can-run</guid>
    </item>
    <item>
      <title>Callbacks, Concerns, and Current: Avoiding Hidden Dependencies in Rails</title>
      <description>Callbacks, concerns, and Current keep code close to the model, but can hide effects and dependencies. When to use them and how to make those dependencies explicit.</description>
      <pubDate>Fri, 09 Oct 2026 15:32:27 +0000</pubDate>
      <link>https://rubyflow.com/p/khxl4x-callbacks-concerns-and-current-avoiding-hidden-dependencies-in-rails</link>
      <guid>https://rubyflow.com/p/khxl4x-callbacks-concerns-and-current-avoiding-hidden-dependencies-in-rails</guid>
    </item>
    <item>
      <title>Fixing SPA Link Previews with a Lambda in Front of AWS Amplify (and Why Rails Never H</title>
      <description>Link preview crawlers don’t run JavaScript, so every route of a static SPA shares the same generic card. In Rails, a &lt;code&gt;content_for :head&lt;/code&gt; block solves this per request. Without a server in the request path, you have to put one back.</description>
      <pubDate>Fri, 09 Oct 2026 13:49:48 +0000</pubDate>
      <link>https://rubyflow.com/p/r0cwqo-fixing-spa-link-previews-with-a-lambda-in-front-of-aws-amplify-and-why-rails-nev</link>
      <guid>https://rubyflow.com/p/r0cwqo-fixing-spa-link-previews-with-a-lambda-in-front-of-aws-amplify-and-why-rails-nev</guid>
    </item>
    <item>
      <title>Rails 8 with Inertia and React: Hotwire Alternative Guide</title>
      <description>Building a Rails 8 admin panel with Inertia and React instead of Hotwire: the trade-offs, the architecture, and a practical tutorial. &lt;a href="https://rubyinsights.blog/en/blog/rails-8-with-inertia-and-react-hotwire-alternative-guide" rel="nofollow"&gt;https://rubyinsights.blog/en/blog/rails-8-with-inertia-and-react-hotwire-alternative-guide&lt;/a&gt;</description>
      <pubDate>Thu, 08 Oct 2026 21:07:59 +0000</pubDate>
      <link>https://rubyflow.com/p/yuzisj-rails-8-with-inertia-and-react-hotwire-alternative-guide</link>
      <guid>https://rubyflow.com/p/yuzisj-rails-8-with-inertia-and-react-hotwire-alternative-guide</guid>
    </item>
  </channel>
</rss>
