<?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>Rails’ travel_to looks like a simple time-testing helper but it reveals a powerful pa</title>
      <description>&lt;a href="https://rubystacknews.com/2026/08/12/beyond-travel_to-the-block-scoped-state-pattern-hidden-in-rails-testing/" rel="nofollow"&gt;https://rubystacknews.com/2026/08/12/beyond-travel_to-the-block-scoped-state-pattern-hidden-in-rails-testing/&lt;/a&gt;</description>
      <pubDate>Thu, 13 Aug 2026 02:17:03 +0000</pubDate>
      <link>https://rubyflow.com/p/hu9kuh-rails-travelto-looks-like-a-simple-time-testing-helper-but-it-reveals-a-powerful</link>
      <guid>https://rubyflow.com/p/hu9kuh-rails-travelto-looks-like-a-simple-time-testing-helper-but-it-reveals-a-powerful</guid>
    </item>
    <item>
      <title>Magic Presenter: A modern replacement for Draper</title>
      <description>&lt;a href="https://github.com/Alexander-Senko/magic-presenter/" rel="nofollow"&gt;Magic Presenter&lt;/a&gt; is a presentation layer gem for Rails models designed to replace Draper. It retains the Decorator/Presenter pattern while addressing fundamental architectural flaws and design bottlenecks present in Draper.</description>
      <pubDate>Wed, 12 Aug 2026 14:52:04 +0000</pubDate>
      <link>https://rubyflow.com/p/k6831z-magic-presenter-a-modern-replacement-for-draper</link>
      <guid>https://rubyflow.com/p/k6831z-magic-presenter-a-modern-replacement-for-draper</guid>
    </item>
    <item>
      <title>How we configured OpenTelemetry logs in Rails</title>
      <description>We added OpenTelemetry logs to our Rails app without a Collector and fixed a few bugs in the Ruby SDK along the way. Here is how we did it: &lt;a href="https://www.sixpatterns.com/blog/how-we-configured-opentelemetry-logs-in-rails" rel="nofollow"&gt;https://www.sixpatterns.com/blog/how-we-configured-opentelemetry-logs-in-rails&lt;/a&gt;</description>
      <pubDate>Wed, 12 Aug 2026 07:57:47 +0000</pubDate>
      <link>https://rubyflow.com/p/20fqgc-how-we-configured-opentelemetry-logs-in-rails</link>
      <guid>https://rubyflow.com/p/20fqgc-how-we-configured-opentelemetry-logs-in-rails</guid>
    </item>
    <item>
      <title>On Ruby - Whitelabel Site for Ruby Communities</title>
      <description>&lt;a href="https://www.rubyforum.org/t/on-ruby-whitelabel-site-for-ruby-communities/618" rel="nofollow"&gt;https://www.rubyforum.org/t/on-ruby-whitelabel-site-for-ruby-communities/618&lt;/a&gt;</description>
      <pubDate>Tue, 11 Aug 2026 21:25:57 +0000</pubDate>
      <link>https://rubyflow.com/p/ksvf8v-on-ruby-whitelabel-site-for-ruby-communities</link>
      <guid>https://rubyflow.com/p/ksvf8v-on-ruby-whitelabel-site-for-ruby-communities</guid>
    </item>
    <item>
      <title>XO Ruby joins RubyConf as Another Exclusive Discriminatory Unexcellent Conference</title>
      <description>So, I got contacted by the organizer of the XO Ruby conference (aka Travelling Ruby), Pascal Laliberté, on meetup.com because I organize the Montreal.rb Ruby Meetup and am a Montreal-based Expert Ruby Software Engineer. He said XO Ruby is coming to Montreal and asked me for help with it. We end up meeting in a video conference call…
&lt;a href="https://andymaleh.blogspot.com/2026/08/xo-ruby-joins-rubyconfrailsworld-as.html" rel="nofollow"&gt;https://andymaleh.blogspot.com/2026/08/xo-ruby-joins-rubyconfrailsworld-as.html&lt;/a&gt;</description>
      <pubDate>Tue, 11 Aug 2026 20:14:20 +0000</pubDate>
      <link>https://rubyflow.com/p/tich5i-xo-ruby-joins-rubyconf-as-another-exclusive-discriminatory-unexcellent-conferenc</link>
      <guid>https://rubyflow.com/p/tich5i-xo-ruby-joins-rubyconf-as-another-exclusive-discriminatory-unexcellent-conferenc</guid>
    </item>
    <item>
      <title>Fair by design: orchestrating background jobs in Ruby</title>
      <description>&lt;a href="https://evilmartians.com/chronicles/fair-by-design-orchestrating-background-jobs-in-ruby" rel="nofollow"&gt;Fair by design: orchestrating background jobs in Ruby&lt;/a&gt;</description>
      <pubDate>Tue, 11 Aug 2026 16:36:12 +0000</pubDate>
      <link>https://rubyflow.com/p/qyip96-fair-by-design-orchestrating-background-jobs-in-ruby</link>
      <guid>https://rubyflow.com/p/qyip96-fair-by-design-orchestrating-background-jobs-in-ruby</guid>
    </item>
    <item>
      <title>sghtmltopdf: an HTML to PDF renderer in Rust, with a Ruby gem and Rails integration</title>
      <description>wkhtmltopdf was archived in 2023, leaving Rails apps stuck between an unmaintained binary and spawning headless Chrome. I built &lt;a href="https://github.com/waka/sghtmltopdf" rel="nofollow"&gt;sghtmltopdf&lt;/a&gt;, a new rendering engine written in Rust that implements CSS Fragmentation and &lt;code&gt;@page&lt;/code&gt; 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 (&lt;code&gt;gem "sghtmltopdf"&lt;/code&gt;).</description>
      <pubDate>Sun, 09 Aug 2026 08:13:15 +0000</pubDate>
      <link>https://rubyflow.com/p/cbvvhe-sghtmltopdf-an-html-to-pdf-renderer-in-rust-with-a-ruby-gem-and-rails-integratio</link>
      <guid>https://rubyflow.com/p/cbvvhe-sghtmltopdf-an-html-to-pdf-renderer-in-rust-with-a-ruby-gem-and-rails-integratio</guid>
    </item>
    <item>
      <title>What Active Record Transactions Actually Protect</title>
      <description>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.</description>
      <pubDate>Sun, 09 Aug 2026 05:57:42 +0000</pubDate>
      <link>https://rubyflow.com/p/cjyv70-what-active-record-transactions-actually-protect</link>
      <guid>https://rubyflow.com/p/cjyv70-what-active-record-transactions-actually-protect</guid>
    </item>
    <item>
      <title>Solid Objects: Easiest reactive ERB there has ever been</title>
      <description>I’ve been building &lt;a href="https://github.com/cardmagic/solid_objects" rel="nofollow"&gt;Solid Objects&lt;/a&gt;, 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.</description>
      <pubDate>Sat, 08 Aug 2026 14:22:08 +0000</pubDate>
      <link>https://rubyflow.com/p/uet4q6-solid-objects-easiest-reactive-erb-there-has-ever-been</link>
      <guid>https://rubyflow.com/p/uet4q6-solid-objects-easiest-reactive-erb-there-has-ever-been</guid>
    </item>
    <item>
      <title>Getting Started with Ruby</title>
      <description>&lt;a href="https://www.rubyforum.org/t/getting-started-with-ruby/24" rel="nofollow"&gt;https://www.rubyforum.org/t/getting-started-with-ruby/24&lt;/a&gt;</description>
      <pubDate>Fri, 07 Aug 2026 20:45:46 +0000</pubDate>
      <link>https://rubyflow.com/p/mmcco8-getting-started-with-ruby</link>
      <guid>https://rubyflow.com/p/mmcco8-getting-started-with-ruby</guid>
    </item>
    <item>
      <title>Ruby 2D v1.0 released</title>
      <description>Years in the making, rebuilt from the ground up, tons of new features, full WebAssembly support, a &lt;a href="https://www.ruby2d.com" rel="nofollow"&gt;new website&lt;/a&gt; with live examples. Check it out! &lt;a href="https://github.com/ruby2d/ruby2d" rel="nofollow"&gt;https://github.com/ruby2d/ruby2d&lt;/a&gt;</description>
      <pubDate>Fri, 07 Aug 2026 20:33:15 +0000</pubDate>
      <link>https://rubyflow.com/p/46fa18-ruby-2d-v10-released</link>
      <guid>https://rubyflow.com/p/46fa18-ruby-2d-v10-released</guid>
    </item>
    <item>
      <title>Turbo Drive, Frames and Streams: a reference verified against the source</title>
      <description>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.</description>
      <pubDate>Fri, 07 Aug 2026 19:18:58 +0000</pubDate>
      <link>https://rubyflow.com/p/rmr9p9-turbo-drive-frames-and-streams-a-reference-verified-against-the-source</link>
      <guid>https://rubyflow.com/p/rmr9p9-turbo-drive-frames-and-streams-a-reference-verified-against-the-source</guid>
    </item>
    <item>
      <title>The Shopify Goldmine: How to Build Your First App in Rails</title>
      <description>From Rails Dev to Shopify Partner: A Beginner’s Guide to Building Apps   If you know Ruby on…</description>
      <pubDate>Fri, 07 Aug 2026 14:27:51 +0000</pubDate>
      <link>https://rubyflow.com/p/djuhkc-the-shopify-goldmine-how-to-build-your-first-app-in-rails</link>
      <guid>https://rubyflow.com/p/djuhkc-the-shopify-goldmine-how-to-build-your-first-app-in-rails</guid>
    </item>
    <item>
      <title>From Conditionals to Polymorphism</title>
      <description>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.</description>
      <pubDate>Fri, 07 Aug 2026 09:28:01 +0000</pubDate>
      <link>https://rubyflow.com/p/2am4p9-from-conditionals-to-polymorphism</link>
      <guid>https://rubyflow.com/p/2am4p9-from-conditionals-to-polymorphism</guid>
    </item>
    <item>
      <title>Did you know you can hook into ActiveRecord's connection pool to automatically config</title>
      <description>🔗 &lt;a href="https://rubystacknews.com/2026/08/06/hooking-into-activerecords-connection-pool-a-clean-way-to-enable-postgresql-row-level-security/" rel="nofollow"&gt;https://rubystacknews.com/2026/08/06/hooking-into-activerecords-connection-pool-a-clean-way-to-enable-postgresql-row-level-security/&lt;/a&gt;</description>
      <pubDate>Fri, 07 Aug 2026 02:59:15 +0000</pubDate>
      <link>https://rubyflow.com/p/ib88ul-did-you-know-you-can-hook-into-activerecords-connection-pool-to-automatically-co</link>
      <guid>https://rubyflow.com/p/ib88ul-did-you-know-you-can-hook-into-activerecords-connection-pool-to-automatically-co</guid>
    </item>
    <item>
      <title>Running a Ruby MCP Server in Production</title>
      <description>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.</description>
      <pubDate>Wed, 05 Aug 2026 19:20:05 +0000</pubDate>
      <link>https://rubyflow.com/p/1zkej7-running-a-ruby-mcp-server-in-production</link>
      <guid>https://rubyflow.com/p/1zkej7-running-a-ruby-mcp-server-in-production</guid>
    </item>
    <item>
      <title>Install any Ruby version in seconds using rv</title>
      <description>In this guide, you’ll learn how to use&amp;nbsp;rv, a&amp;nbsp;very fast version and package manager for Ruby&amp;nbsp;to get started in minutes instead of hours: &lt;a href="https://www.rubyforum.org/t/install-any-ruby-version-in-seconds-using-rv" rel="nofollow"&gt;https://www.rubyforum.org/t/install-any-ruby-version-in-seconds-using-rv&lt;/a&gt;</description>
      <pubDate>Wed, 05 Aug 2026 14:18:14 +0000</pubDate>
      <link>https://rubyflow.com/p/nu62w9-install-any-ruby-version-in-seconds-using-rv</link>
      <guid>https://rubyflow.com/p/nu62w9-install-any-ruby-version-in-seconds-using-rv</guid>
    </item>
    <item>
      <title>wurk: Sidekiq Pro and Enterprise features, MIT licensed</title>
      <description>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 &lt;code&gt;perform_async&lt;/code&gt; calls and your Redis.</description>
      <pubDate>Wed, 05 Aug 2026 13:45:23 +0000</pubDate>
      <link>https://rubyflow.com/p/su2644-wurk-sidekiq-pro-and-enterprise-features-mit-licensed</link>
      <guid>https://rubyflow.com/p/su2644-wurk-sidekiq-pro-and-enterprise-features-mit-licensed</guid>
    </item>
    <item>
      <title>Wide Events: Token-efficient Rails telemetry for coding agents</title>
      <description>I released &lt;a href="https://github.com/adammiribyan/wide_events" rel="nofollow"&gt;Wide Events&lt;/a&gt;, 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.</description>
      <pubDate>Tue, 04 Aug 2026 20:29:00 +0000</pubDate>
      <link>https://rubyflow.com/p/vh51c7-wide-events-token-efficient-rails-telemetry-for-coding-agents</link>
      <guid>https://rubyflow.com/p/vh51c7-wide-events-token-efficient-rails-telemetry-for-coding-agents</guid>
    </item>
    <item>
      <title>When Rails gives you a schema instead of a boundary</title>
      <description>&lt;a href="https://paweldabrowski.com/farewell-to-rails-way/when-rails-gives-you-a-schema-instead-of-a-boundary" rel="nofollow"&gt;https://paweldabrowski.com/farewell-to-rails-way/when-rails-gives-you-a-schema-instead-of-a-boundary&lt;/a&gt;</description>
      <pubDate>Tue, 04 Aug 2026 09:47:16 +0000</pubDate>
      <link>https://rubyflow.com/p/gzy4du-when-rails-gives-you-a-schema-instead-of-a-boundary</link>
      <guid>https://rubyflow.com/p/gzy4du-when-rails-gives-you-a-schema-instead-of-a-boundary</guid>
    </item>
    <item>
      <title>Most Ruby developers use only a fraction of what RSpec Expectations can do.</title>
      <description>Read more:
&lt;a href="https://rubystacknews.com/2026/08/03/rspec-expectations-youre-probably-using-the-wrong-matcher/" rel="nofollow"&gt;https://rubystacknews.com/2026/08/03/rspec-expectations-youre-probably-using-the-wrong-matcher/&lt;/a&gt;</description>
      <pubDate>Tue, 04 Aug 2026 02:00:49 +0000</pubDate>
      <link>https://rubyflow.com/p/c8nmew-most-ruby-developers-use-only-a-fraction-of-what-rspec-expectations-can-do</link>
      <guid>https://rubyflow.com/p/c8nmew-most-ruby-developers-use-only-a-fraction-of-what-rspec-expectations-can-do</guid>
    </item>
    <item>
      <title>Function Calling</title>
      <description>In this episode, we look at adding function calling or tool use to our Rails application when making generative text LLM requests. &lt;a href="https://www.driftingruby.com/episodes/function-calling" rel="nofollow"&gt;https://www.driftingruby.com/episodes/function-calling&lt;/a&gt;</description>
      <pubDate>Mon, 03 Aug 2026 15:08:48 +0000</pubDate>
      <link>https://rubyflow.com/p/4gt0mm-function-calling</link>
      <guid>https://rubyflow.com/p/4gt0mm-function-calling</guid>
    </item>
    <item>
      <title>Ruby and Rails investigations</title>
      <description>&lt;a href="https://ark.marianposaceanu.com/topics/ruby-rails" rel="nofollow"&gt;https://ark.marianposaceanu.com/topics/ruby-rails&lt;/a&gt;</description>
      <pubDate>Sun, 02 Aug 2026 21:23:15 +0000</pubDate>
      <link>https://rubyflow.com/p/f7wnmy-ruby-and-rails-investigations</link>
      <guid>https://rubyflow.com/p/f7wnmy-ruby-and-rails-investigations</guid>
    </item>
    <item>
      <title>Multiple named cache stores for Rails, through Rails.cache(:name)</title>
      <description>&lt;a href="https://github.com/igorkasyanchuk/rails_named_cache" rel="nofollow"&gt;https://github.com/igorkasyanchuk/rails_named_cache&lt;/a&gt;</description>
      <pubDate>Sun, 02 Aug 2026 15:11:22 +0000</pubDate>
      <link>https://rubyflow.com/p/oh9azm-multiple-named-cache-stores-for-rails-through-railscachename</link>
      <guid>https://rubyflow.com/p/oh9azm-multiple-named-cache-stores-for-rails-through-railscachename</guid>
    </item>
    <item>
      <title>What Happens When You Call save</title>
      <description>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.</description>
      <pubDate>Sun, 02 Aug 2026 03:57:53 +0000</pubDate>
      <link>https://rubyflow.com/p/66petv-what-happens-when-you-call-save</link>
      <guid>https://rubyflow.com/p/66petv-what-happens-when-you-call-save</guid>
    </item>
  </channel>
</rss>
