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

In partnership with

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

🚀 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

📅 Events

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

📅 Could be a good time to attend a conference in May and June in Europe and Japan:

📅There are 12 Ruby meetups around the world happening this week:

(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

👉 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.

💻 Code Samples

💻 Vincent Rolea shared a productivity tip about using the “pbpaste” command in terminals to easily run commands with different input values

💻 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

💻 Hans Schnedlitz explained the difference between 'turbo_replace' and 'turbo_update' in Rails

💻 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

Source: @thd.codes

💻 RubyCademy demonstrated how Rails 7.1+ simplifies setting default values for locals in partials with the “locals:” pragma

💻 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

️💻 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

Source: @push.cx

Replies from his community:

Source: @kyrylo.org

️And Peter asked:

Source: @push.cx

Got the following response:

Source: @kyrylo.org

Stephen replied:

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: @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

📐 Gavin Morrice asked for recommendations on Ruby gems for parsing JSON content into flattened objects

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:

📐 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

📐 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:

💡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:

❤️ 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

❤️ 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“

🆕 ハダシa created a new gem → MRubyCS - “A new mruby virtual machine implemented in C#“

🆕 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

🤝 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

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

More content: 📚 🗞 🎧 🎥 ✍🏾

🗞 Newsletters

🗞 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...

🎧 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

🆕 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 📝

✍️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

or to participate.