- Short Ruby Newsletter
- Posts
- Short Ruby Newsletter - edition 134
Short Ruby Newsletter - edition 134
The one where you can read about why Marc Köhlbrugge chose Ruby, where Adam Fortuna shares how they returned to Rails, and where Ruby Central discusses how Honeybadger builds with Rails

Table of Contents
Optimize global IT operations with our World at Work Guide
Explore this ready-to-go guide to support your IT operations in 130+ countries. Discover how:
Standardizing global IT operations enhances efficiency and reduces overhead
Ensuring compliance with local IT legislation to safeguard your operations
Integrating Deel IT with EOR, global payroll, and contractor management optimizes your tech stack
Leverage Deel IT to manage your global operations with ease.
🚀 Launches and discounts
🚀 José Valim launched Tidewave - “Tidewave speeds up development with an AI assistant that understands your web application, how it runs, and what it delivers. Our current release includes open source tools that connect your editor's assistant to your web framework runtime via MCP“. Check out this tool by accessing → tidewave.ai

Source: https://tidewave.ai
🚀 Oli Nelson launched Maestrocast, a new platform designed to help musicians teach music online with features for managing lesson notes, annotating sheet music in real-time, and creating an enjoyable virtual teaching experience. For more details, look up for Maestocast 🎶
🚀 Josh Pigford announced that Maybefinance.com is now available for everyone (btw the project is an open source Ruby on Rails app)

Source: @Shpigford
🚀 Jason Swett launched the public website for Nonsense Monthly - A wonderful, extraordinary snail mail programming newsletter

Source: nonsensemonthly.com
📅 Events
📅 Kasper Timm Hansen announced a new worksop → Riffing: for the creative Rails teams who want cohesive code

Source: @kaspth.bsky.social
📅 Could be a good time to attend a conference in May and June in Europe and Japan:

Source: https://rubyconferences.org
Helvetic Ruby on 22-23 May in Geneva, Switzerland
Baltic Ruby 2025 on 12-14 June in Riga, Latvia
Brighton Ruby 2025 on 19 June in Brighton, UK
KansaiRubyKaigi08 on 28 June in Kyoto, Japan
📅There are 12 Ruby meetups around the world happening this week:
Paris.rb - May 2025 - May 6th
Ruby on Rails Oceania Sydney - ROROSYD | MAY 2025 EDITION - May 6th
RubyJax - Open Hax May 2025 - May 6th
ChicagoRuby - Chicago Ruby @ Avant - May 7th
NYC on Rails - Artificial Ruby NYC - May 7th
Prague.rb - First Wednesday Of The Month - Ruby May 2025 - May 7th
Rails Taiwan - 高雄 Rails Meetup May 2025 - May 7th
Rzeszow Ruby User Group - Spotkanie #44 – Kubernetes - May 7th
Barcelona.rb - meetup #May - May 8th
Ruby DF - 6ª Edição - Os Bastidores do Ruby - May 10th
(ad)
Start learning AI in 2025
Keeping up with AI is hard – we get it!
That’s why over 1M professionals read Superhuman AI to stay ahead.
Get daily AI news, tools, and tutorials
Learn new AI skills you can use at work in 3 mins a day
Become 10X more productive
👉 All about Code and Ruby
👉 Adam Fortuna published a blog post about Part 1: How We Fell Out of Love with Next.js and Back in Love with Ruby on Rails & Inertia.js (the article generated a good discussion on HackerNews)
👉 Ruby Central published a new article about Company Spotlight: How Honeybadger Built a Profitable Bootstrapped Business on Rails
👉 Alexandre Terrasa published a new article → Inline RBS comments support for Sorbet
I would recommend as an extra resource to read also this article from Joel Drapper about More typing with less typing, an introduction to Literal
👉 Irina Nazarova published a new article about Rails, hacking, and Stripe as a scoreboard: Marc Köhlbrugge’s playbook
👉 I to agree a lot with Amanda Brooke Perino here. That’s why I almost always comment on Hacker News or any forum where I see people still spreading old narratives about Ruby and Rails. I think we should not just accept them and move on but reply to them and show why the narrative is wrong. Maybe not with the purpose of convincing the author who is spreading that narrative but for other people who might read that without knowing Ruby and Rails. If no one refutes these statements, people from outside our community could take them as truth.

Source: @AmandaBPerino
💻 Code Samples
️️💻 Vincent Rolea shared a productivity tip about using the “pbpaste” command in terminals to easily run commands with different input values

Source: @vincentrolea
️💻 Ruby Cademy highlighted Rails 8's new “rate_limit” feature for controllers, showing how to combine it with a “handle_rate_limit” method and a “BusyController” to centralize throttled request handling in a clean, easily extendable way

Source: @RubyCademy

Source: @RubyCademy
️💻 Matt Swanson shared three key tips for optimizing Hotwire

Source: @_swanson
️💻 RubyCademy advised using “String#tr” instead of “String#gsub” when simply swapping characters in a string

Source: @rubycademy.bsky.social
️💻 Hans Schnedlitz explained the difference between 'turbo_replace' and 'turbo_update' in Rails

Source: @hansschnedlitz.com

Source: @hansschnedlitz.com
️💻 Thiago Araujo shared a helpful Rails tip about using “rails routes --expanded” to find which controller#action is being called by a specific route. This is a thread, and you can read all of it on Bluesky
️💻 RubyCademy demonstrated how Rails 7.1+ simplifies setting default values for locals in partials with the “locals:” pragma

Source: @rubycademy.bsky.social
️💻 Matt Swanson demonstrated how developers can control event bubbling behavior in Stimulus by using “action: event#emit” to prevent conflicts between drawer and lightbox components. For more details , check the documentation → Stimulus Reference: Actions

Source: @_swanson
️💻 Ruby Cademy showcased how to use the end-of-options marker (--) when starting the Rails console to pass options directly to IRB

Source: @RubyCademy
💻 Stan Lo shared a debugging tip for Ruby applications, explaining that using “kill -s BUS <pid>” will generate a crash report with a backtrace, which successfully helped Drew solve his problem

Source: @st0012.dev

Source: @drbragg.dev
💻 Jamie Schembri pointed out that Ruby's standard library includes a module for implementing the Observer pattern

Source: @jamie.schembri.me

Source: @jamie.schembri.me

Source: @jamie.schembri.me

Source: @jamie.schembri.me

Source: @jamie.schembri.me
️💻 Ruby Cademy warned that using “toggle!” in Rails calls “update_attribute” behind the scenes, which bypasses ActiveRecord validations

Source: @RubyCademy
Jake replied to it with the following:

Source: @jakeonrails

Source: @jakeonrails

Source: @jakeonrails
️💻 Samuel Williams shared his appreciation for composite predicates in SuS testing framework, showing code that uses chained assertions with the 'and' method to test if a timeout duration falls within a specific range

Source: @ioquatix
📐 Thinking about Code Design
️️📐 Peter Bhat Harkins requested scale informations from Rails users who run SQLite in production, specifically asking for read/write per second metrics, row counts, and VPS sizes to supplement his experience using it with SolidQueue and SolidCache
Replies from his community:

Source: @kyrylo.org
️And Peter asked:

Source: @push.cx
Got the following response:

Source: @kyrylo.org
Stephen replied:

Source: @fractaledmind.bsky.social

Source: @fractaledmind.bsky.social
The resources from Stephen posts:
📐 Fabian questioned why Rack::Deflater isn't included by default in Rails, sharing code showing how to implement it and noting it significantly improved his response times without causing issues

Source: @ffaebi
️Replies from his community:

Source: @rafaelfranca

Source: @mhenrixon

Source: @leopard_me
📐 Daniel Westendorf shared his experience switching from Puma to Falcon server for a Rails app

Source: @dwestendorf
️📐 RoRvsWild shared a four-step recipe for gradually increasing code coverage by setting minimums, preventing decreases, and making regular adjustments

Source: @rorvswild.com

Source: @rorvswild.com
️📐 Gavin Morrice asked for recommendations on Ruby gems for parsing JSON content into flattened objects

Source: @MorriceGavin
️He got the following replies:

Source: @fh_ndiritu

Source: @mbell697
Gem mentioned in this post → store_model - “Work with JSON-backed attributes as ActiveRecord-ish models“
Other gems mentioned by his community:
jsonapi-unwrapper - “Dead simple parser / deserializer for json api“
jsonapi_parameters - “Rails-way to consume JSON:API input“
📐 Michael Chaney shared his approach to using string enums in Rails instead of integers, explaining how using single character values like 'I' and 'X' makes database queries more readable while avoiding database-specific functionality

Source: @MichaelDChaney

Source: @MichaelDChaney
️📐 Alessandro Rodi questioned the use of counter_cache columns beyond visualization purposes, suggesting avoiding cache for important operations and asking for opinions from his community

Source: @coorasse

Source: @coorasse

Source: @coorasse
️He got some replies:

Source: @mediafinger

Source: @pankowecki
Gem mentioned in this post → n1_loader - “Loader to solve N+1 issues for good. Highly recommended for GraphQL API“

Source: @pankowecki
📐 Thiago Araujoshared suggested that controllers with multiple custom actions for the same thing (create/update/delete) indicate a missing domain concept that should be extracted into its own controller

Source: @thd.codes
️📐 Michael Chaney shared a long post about structuring REST routes. We are including here just the first part of the post:

Source: @MichaelDChaney
💡Around code (news, findings, books, and more - all about Ruby)

Source: r/rails
Here are what was recommended, but we invite you to read the replies on Reddit as people also said why the recommend each resource:
Learn Hotwire by GoRails
Hotwire for Rails Developers by Pragmatic Studio
Modern Front-End Development for Rails, Second Edition by Noel Rappin
The Turbo Rails Tutorial by Alexandre Ruban
Rails 8: The Demo by David Heinemeier Hansson
Ruby on Rails Hotwire + Turbo for Beginners by Malachi Rails
Getting Started with Stimulus in Rails (The Basics) by ken greeff
Master Hotwire by Radan Skoric
Stimulus JS Handbook by 37 Signals
Tips and Tricks to Improve Your Hotwire by Rails Designer
Copy to Clipboard with Stimulus & Rails by Daniela Baron
Hello Hotwire by Andy Leverenz
Just enough Hotwire for Rails developers by SupeRails
30 days of Hotwire by Andrea Rocca
The Rails and Hotwire Codes by Ayush Newatia
Learn Hotwire By Building a Forum by Andrea Fomera
Videos about Turbo Native by Joe Masilotti
❤️ Why Choose Ruby and Rails
❤️ Alexandre Ruban showed his appreciation for Rails, reflecting on his 7 years working with it and how many new additions are presented during Rails World

Source: @alexandre_ruban
❤️ Zeke Gabrielse shared how he quickly switched from PHP to Rails, building his third Rails app within a year and appreciating Rails 5's API-only mode for productivity benefits

Source: @_m27e
❤️ Irina Nazarova shared a video of Andrew Ford walking to SF Ruby meetup and explaining how a Ruby meetup changed his career. Video available on YouTube → the secret to my whole programming career

Source: @inazarova
🧰 Gems, Libraries, Tools and Updates
🆕 New Gems and Repos
🆕 Leon Vogt created a new gem → hotwire-native-dev-tools - “A lightweight dev tool to debug and inspect Hotwire Native apps, right from your mobile app“
🆕 Stephen created a Tidewave extension toolkit → TwExtensions - “Unofficial additional tools and functionality for the Tidewave Rails gem“
🆕 Avdi Grimm created a new gem → ivar - “Checked Ruby instance variables“

Source: https://github.com/avdi/ivar
🆕 Adam created a new gem → flutter_on_rails_cli - “Flutter on rails is the fastest way to bridge your web app with a Flutter-powered for cross plateform mobile and desktop app with ease and minimal changes, maximum freedom“. Here is the entire documentation available to read → Flutter on Rails Documentation
🆕 Javi Ramirez created a new gem → api_keys - “🔑 Secure API keys for your Rails app“
🆕 Ebi You created a new gem → chrono_forge - “A robust framework for building durable, distributed workflows in Ruby on Rails applications“
🆕 Julik Tarkhanov created a new gem → active_storage_encryption - “Customer-supplied encryption keys for ActiveStorage blobs“
🧰 Updates
🧰 Mike Mc Quaid announced a new version of Homebrew. More details about this release can be read here → Homebrew 4.5.0

Source: @MikeMcQuaid
🧰 Chris Oliver announced a series of updates for the following gems
pay - “Pay is a payments engine for Ruby on Rails 6.0 and higher”
refer - “Referral codes and affiliate links for Ruby on Rails applications”
noticed - “Noticed is a gem that allows your application to send notifications of varying types, over various mediums, to various recipients“
🧰 Vitaly Slobodin announced an update for zed-extensions/ruby - “Ruby extension for Zed“
🧰 Gumroad announced that they’re are officially MIT licensed - “Gumroad is an e-commerce platform that enables creators to sell products directly to consumers“

Source: @gumroad
🧰 Jeremy Evans announced a new version of Sequel - “Sequel is a simple, flexible, and powerful SQL database access toolkit for Ruby”
🧰 Hasumi Hitoshi announced a new version for R2P2 - “R2P2 (Ruby Rapid Portable Platform) is a shell system runs on Raspberry Pi Pico written in picoruby/picoruby“
🤝 Hans Schnedlitz shared a quick Vim tip for removing Ruby comments when AI generates too many

Source: @hansschnedlitz.com
🤝 Irina Nazarova shared insights on tasks that require human experts rather than AI

Source: @inazarova
🤝 Uncle Bob Martin shared insights on Alan Kay's original object-oriented programming concept

Source: @unclebobmartin
🤝 Gergely Orosz shared about how “AI is killing tech jobs” according to data seems false (read it on Threadreader app)

Source: @GergelyOrosz
More content: 📚 🗞 🎧 🎥 ✍🏾
🗞 Ruby On Rails published a new edition → Ruby on Rails; Parallel testing improvements and more
🗞Hotwire Weekly published a new edition → Week 18 - Hotwire Native Dev Tools, Hotwire Native Tabs, and more!
🗞 Ruby Weekly published a new edition about All the gem statistics you can eat
🗞 Andy Croll published a new edition of One Ruby Thing about What’s the difference between Rails’s try and the safe navigation (&.) operator?
🗞 Andrey Eremin published a new edition about Static Ruby Monthly | Issue 4
🗞 Women On Rails Newsletter International Version published a new edition about Newsletter WoR #61: There's No Stopping AI, Monoliths vs Microservices (Yes, Really), Inspiration for 404s...
🗞 Awesome Ruby Newsletter published a new article about Issue 467 - Itsi - A fast new Ruby Rack server, reverse proxy, static file server and more.
🎧 Podcasts
🎧 David Hill published a new podcast episode → Aji Slater - Ode to RailsConf
🎧 IndieRails published a new podcast episode → Radan Skorić - Mastering Hotwire
🎧 The Bike Shed published a new postcast episode → 461: Writing new vs existing code with Sara Jackson
🎧 Remote Ruby published a new episode about Colleen Schnettler of SaaS Marketing Gym
🎧 Ruby Rogues published a new episode about How to Optimize Your Rails App Using SQLite - RUBY 674
🎥 Videos
🎥 Uncle Bob Martin published a new video → Morning bathrobe rant: OOP.
🎥 Joe Masilotti published a new video → Hotwire Native Tabs
🎥 Ken Greeff published a new video → Smarter Rails apps with AI using RubyLLM
🎥 Balkan Ruby published the videos from the first day of the conference → Balkan Ruby 2025 - YouTube
🎥 Cirdes Henrique published a new video → How to Use RubyUI in Rails | Build a Blog App with Components and Forms
🎥 Scott Werner published a new article about Make Reviewing AI Output Fun!
🎥 Dave Kimura published a new article about Scaffold Templates
✍🏾 Articles
What’s new 🆕
🆕 Mohit Sindhwani published a new article about JRuby 10 on Windows: Day 0 - install and Hello World
🆕 Avo published a new article → Markdown Image Uploads with EasyMDE and Active Storage
🆕 Dave Thomas published a new article about Design Patterns Are Not Design
🆕 Vishnu M published a new article → Scaling Rails - part 2 Amdahl's law
🆕 Charles Oliver Nutter published a new article → Creating Beautiful Charts with JRuby and JFreeChart and about 3D Charts and More with JRuby and JFreeChart
🆕 Rails Designer published a new article about Turbo Drive, Frames, Streams, Morph? What to use?!
🆕 Adrian Marin published a new article → Balkan Ruby '25 - The long term
🆕 Joel Drapper published a new article → The problem with instance variables
🆕 Daniela Baron published a new article about Active Storage & Form Errors: Preventing Lost File Uploads in Rails
🆕 Evil Martians published a new article → Rails, hacking, and Stripe as a scoreboard: Marc Köhlbrugge’s playbook
🆕 Muhammad Arief Rahman published a new article → Making TailwindCSS IntelliSense Work with Phlex in VSCode
🆕 Joel Drapper published a new article → No Exceptions and More typing with less typing, an introduction to Literal
🆕 Jamie Schembri published a new article → SOLID: The Open–Closed Principle (OCP)
🆕 Ruby Central published a new article → Welcoming Ruby Central’s New Executive Director, Shan Cureton
🆕 Benoit Daloze published a new article → Contributions to ruby/spec
🆕 Trésor Bireke published a new article about Sorting elegantly in Rails with in_order_of
🆕 Rails Designer published a new article about Enhanced debugging for Stimulus
🆕 Ruby Central published a new article → Company Spotlight: How Honeybadger Built a Profitable Bootstrapped Business on Rails
🆕 Adam Fortuna published a new article → Part 1: How We Fell Out of Love with Next.js and Back in Love with Ruby on Rails & Inertia.js
🆕 Alexandre Terrasa published a new article → Inline RBS comments support for Sorbet
🆕 Irina Nazarova published a new article about Rails, hacking, and Stripe as a scoreboard: Marc Köhlbrugge’s playbook
🆕 Brooke Kuhlmann published a new article about Options Pattern
🆕 Stefan Wienert published a new article about Kamal - Presentation @Ruby Frankfurt
How-TOs 📝
📝Aysan Isayo published a new article about A Useful Command to Check If a Gem Is Loaded in Your Bundler Environment
✍️Kyrylo Silin published a new article about How the pay-once business model saved my *aaS
✍️ Josef Strzibny published a new article about Steal my AsciiDoc book template
Reply