Short Ruby Newsletter - edition 135

The one where EuRuKo has announced that their tickets are on sale, Rails World tickets will go on sale on the 13th of May, and Joel Drapper invites us to use the strict_ivars gem.

Table of Contents

(partnership)

Buy Tickets at balticruby.org

There’s no conference without attendees β€” and no community without its people.

We want as many of you as possible to join Baltic Ruby this year, so we’re introducing 1-day and 2-day passes, accessibility tickets, and fresh discounts on regular tickets. We truly hope this helps you find the time to come and have fun with friends in Riga!

πŸ“… Events

πŸ“… Ruby On Rails announced some updates about Rails World 2025. For more details, check out this blog β†’ Rails World 2025: Two big updates

πŸ“… Euruko announced the availability of tickets for this year event. Secure your spot now at β†’ 2025.euruko.org

Source: @euruko

πŸ‘‰ All about Code and Ruby

πŸ‘‰ JRuby 10.0.0.1 has been released - β€œJRuby, an implementation of Ruby on the JVMβ€œ

πŸ‘‰ Ruby On Rails announced they've adopted the Ruby community guidelines for conduct

πŸ‘‰ Vishnu M published a new article in the series about Scaling Rails Rails about Tuning Puma max_threads Configuration with GVL Instrumentation

πŸ‘‰ David Morales published a new article about Rack for Ruby: The Complete Beginner’s Guide

πŸ‘‰ You should check the new gem from Joel Drapper called strict_ivars - Make Ruby raise a NameError if you read an undefined instance variable

Joel also published a thoughtful article explaining the advantages of using this gem over other approaches that made Avdi Grimm gracefully deprecate his gem that set to solve the same problem differently. I still recommend reading his gem source code as it is very well documented and the code is easy to read and elegant.

(ad)

Run ads IRL with AdQuick

With AdQuick, you can now easily plan, deploy and measure campaigns just as easily as digital ads, making them a no-brainer to add to your team’s toolbox.

You can learn more at www.AdQuick.com

πŸ’» Code Samples

πŸ’» Jamie Schembri shared a challenging Ruby interview question about writing a 'my_max' method using only 'length' and 'is_a?'. This is a thread, and is highly recommended to read it entirely on Bluesky 

οΈπŸ’» Hans Schnedlitz demonstrated a simple technique for implementing lazy-loading content with Hotwire and Stimulus

Source: @hschnedlitz

Source: @hschnedlitz

Source: @hschnedlitz

οΈπŸ’» Oli Nelson shared a code sample where he implemented concurrency control in his Maestrocast application with just one line of Ruby on Rails code

Source: @o_j_nelson

οΈπŸ’» Pedro Augusto Ramalho Duarte shared an important Inertia tip about always setting up the version option

οΈπŸ’» Daveyon Mayne shared a Rails authentication tip for allowing multiple model types to sign in using email addresses

Source: @sylarruby

οΈπŸ’» Devin Starks expressed amazement at Ruby on Rails, sharing code that demonstrates how Time.current.all_month provides a convenient range for the current month and how it's automatically converted into optimized SQL when used in an ActiveRecord query condition

οΈπŸ’» Zeke Gabrielse expressed his love for Ruby while sharing complex test code that demonstrates bulk job processing

Source: @_m27e

Source: @_m27e

οΈπŸ’» Samuel Williams highlighted a useful fixture gem from the Sus testing framework that helps validate or ignore console output. In this example he is using β€œSus::Fixtures::Console::CapturedLogger”

Source: @ioquatix

οΈπŸ’» Nick Schwaderer shared how to use this new gem β†’ 1901 - β€œA bloopsaphone cover of Phoenix's β€˜1901’ β€œ

Source: @schwad_rb

And made a tune for it which is available on GitHub Gist

οΈπŸ’» Mikkel Malmberg created a Ruby module that automatically generates Stripe-style unique identifiers (like 'xy_abc123') for Rails models. This code is available on GitHub Gist

Source: @mikker.dev

Source: @mikker.dev

οΈπŸ’» Mohammad A. Ali published a new article announcing a new feature for TinyBits, allowing users to supply external dictionaries to pack/unpack methods

If you’ve read this far, you probably enjoy this newsletter. You can support it by sharing it on social media and inviting your friends or colleagues to subscribe. Additionally, you can help keep it free for a long time for the entire community by upgrading to a paid subscription.

πŸ“ Thinking about Code Design

οΈοΈπŸ“ David Heinemeier Hansson shared his experience with Rails testing performance, claiming FactoryBot slows down test suites while Rails Fixtures offer superior speed

Source: @dhh

️Got some replies:

Source: @bartlecki

πŸ“ Jeremy Smith highlighted the dual benefits of using database constraints in Rails applications

οΈπŸ“ Aaron Sumner asked his community about wiping Active Storage files after RSpec test runs

οΈπŸ“ Ciaran Lee shared his satisfaction with Ruby on Rails performance

Source: @ciaran_lee

Source: @ciaran_lee

πŸ“ Jason Fried shared the first preview of Fizzy, Basecamp's upcoming idea/issue/bug tracker designed with simplicity at its core

Source: @jasonfried

Source: @jasonfried

David Heinemeier Hansson replied:

Source: @dhh

οΈπŸ“ Andrew White expressed concerns that Action Text and Active Storage don't align well with Rails philosophy, particularly regarding VPS hosting and SQLite in production. This is an interesting thread, take your time and read it all on Bluesky 

Rosa replied:

Source: @rosa.codes

οΈπŸ“ Donn Felker shared about using the overcommit gem:

Source: @donnfelker

οΈπŸ“ Errol Schmidt shared five things learned about building and maintaining apps for enterprise clients:

πŸ’‘Around code (news, findings, books, and more - all about Ruby)

πŸ’‘ Joe Masilotti announced that his book Hotwire Native for Rails Developers is officially content-complete πŸ₯³. The book is available on The Pragmatic Bookshelf

Print preorder available at Amazon.

πŸ’‘ Phil Smy offered practical advice for developers

Source: @psmy

πŸ’‘ Gumroad announced they're extending their open source hackathon until September

Source: @gumroad

❀️ Why Choose Ruby and Rails

❀️ George Tobias from Reinteractive published an article about Ruby on Rails 8: Why It's Still a Top Contender in the Modern Web Framework Landscape

❀️ Josh Pigford showed how amazing Rails is for building software

Source: @Shpigford

❀️ Ivan Morgillo highlighted how Rails' 'Convention over configuration' principle gives it a major advantage in the AI era

Source: @hamen

Source: @hamen

❀️ Freedom Dumlao shared that Flexcar successfully switched from Java to Ruby on Rails one year ago, and the impact was massive

Source: @APIguy

❀️ Ruby Central published an interesting video with amazing insights β†’ Ruby Talks: John Dewsnap on Moving Flexcar From Java to Rails in 4 MONTHS + Keynoting RailsConf 2025

🧰 Gems, Libraries, Tools and Updates

πŸ†• New Gems and Repos

πŸ†• Mohammad A. Ali created a new gem β†’ tinybits-rb - β€œA Ruby gem that wraps the tinybits packing/unpacking C library for space (both in memory and on disk) and time efficient encoding/decoding of JSON like structuresβ€œ

πŸ†• Sergiobayona created a new gem β†’ vector_mcp - β€œA easy-to-use and minimal server implementation for the Model Context Protocol (MCP) in Rubyβ€œ

πŸ†• Joshua Young created a new gem β†’ dial - β€œA modern profiler for your Rails applicationβ€œ 

πŸ†• Γ©tienne BarriΓ© created a new gem β†’ autolib - β€œSet up autoloads for the standard libraryβ€œ

🧰 Updates

🧰 Avo for Ruby on Rails announced a new release Avo 3.20 - β€œAvo is a very custom Admin Panel Framework, Content Management System, and Internal Tool Builder for Ruby on Rails that saves engineers and teams months of development time.β€œ

🧰 Bozhidar Batsov (a.k.a. Bug) announced an update for rubocop - β€œA Ruby static code analyzer and formatter, based on the community Ruby style guideβ€œ

🧰 Brad Gessler announced that Terminalwire is now open source πŸ₯³ - β€œTerminalwire streams terminal I/O between a web server and client over WebSockets. This means you can use your preferred command-line parser within your favorite web server framework to deliver a delightful CLI experience to your usersβ€œ. For more details check the blog mentioned in this post β†’ Terminalwire is open source. Also, this gem is available on GitHub β†’ terminalwire/ruby

🧰 Jeremy Evans announced an update for capybara-validate_html5 - β€œValidate HTML5 for each page accessed when testing with capybaraβ€œ

🧰 Ruby On Rails announced a new update for Rails documentation. If you’re interested, check it out β†’ [RF-DOCS] Rails Application Template Guide - merge with Rails Generators Guide

Source: @rails

🀝 Joel Drapper shared his evolving perspective on tests

🀝 Adrian Oprea shared how to use dynamic importmaps as dependency manifests by parsing their JSON content from the DOM

Source: @oprearocks

🀝 Avi Flombaum shared his thoughts about AI code generation

Source: @aviflombaum

🀝 Lemon Squeezy announced reaching a significant milestone following their acquisition by Stripe last year, sharing that Stripe Managed Payments will be launching in private preview this summer ⛱️. For more details, check out the blog post β†’ Stripe + Lemon Squeezy Update: A Big Milestone Reached

Source: @lmsqueezy

🀝 Irina Nazarova encouraged women and minorities in tech to accept invitations for public activities like speaking, podcasting, and interviews

Source: @inazarova

🀝 Adrian Oprea documented his process of making this product called CarKeep. This is a thread, and is highly recommended to read it all on X

Source: @oprearocks

🀝 Donn Felker shared his take on IDE preferences based on programming languages

Source: @donnfelker

🀝 David Heinemeier Hansson explained his approach to using LLMs as development tools

Source: @dhh

More content: πŸ“š πŸ—ž 🎧 πŸŽ₯ ✍🏾

πŸ“š Jeremy Smith posted his slides from Balkan Ruby 2025 β†’ In Limbo: Managing Transitional States

πŸ—ž Newsletters

πŸ—ž This Week In Rails published a new article about New Guides PR, Rails World Updates and more!

πŸ—ž Ruby Weekly published a new edition β†’ Coming back to Rails from Next.js

πŸ—ž Ruby Central published a new edition β†’ The Ruby Central README: April 2025

πŸ—ž Hotwire Weekly published a new article β†’ Week 19 - From Next.js to Rails, Building a Password Manager, and more!

πŸ—ž Any Cable published a new edition β†’ Any Cables Monthly #28: of past and presence

πŸ—ž Matt Solt published a new edition β†’ Ruby AI News - May 6th, 2025

πŸ—ž Awesome Ruby Newsletter published a new article about Issue 468 - We Fell Out of Love with Next.js and in Love with Ruby on Rails and Inertia.js

🎧 Podcasts

🎧 The Bikeshed published a new podcast β†’ 462: Decomposition as a key developer skill with Steve Polito

🎧 The Ruby On Rails Podcast published a new edition β†’ Episode 536: Better With Becky with Becky Searls

🎧 Remote Ruby published a new edition β†’ Why is the Test Suite Hanging?!

🎧 Ruby Rogues published a new edition β†’ Demystifying the Rails Codebase with Ridhwana Khan - RUBY 675

πŸŽ₯ Videos

πŸŽ₯ Tropical published all of the talks on the first day of this year's event β†’ Tropical.rb Day 1 videos

πŸŽ₯ Balkan Ruby published all of the talks from this year’s event β†’ Balkan Ruby 2025

πŸŽ₯ Ken Greeff published a new video β†’ Using AI Tools with RubyLLM

πŸŽ₯ Chris Oliver published a new video β†’ How to add Lazy Load Hooks to Rails Plugins

πŸŽ₯ Dave Kimura published a new video β†’ Scaffold Templates

✍🏾 Articles

What’s new πŸ†•

πŸ†• Jose Blanco published a new article β†’ Developing a voice AI app in Rails for drive-through ordering

πŸ†• Brad Gessler published a new article about Terminalwire is open source

πŸ†• Hans-JΓΆrg Schnedlitz published a new article β†’ An Introduction to Solid Queue for Ruby on Rails

πŸ†• Vishnu M published a new article β†’ Finding ideal number of threads per process using GVL instrumentation

πŸ†• Avo published a new article β†’ Multistep Forms in Rails with the Wicked gem and about Cloudflare R2 with Active Storage

πŸ†• Adrian Marin published a new article β†’ Building admin panels sucks

πŸ†• Joel Drapper published a new article β†’ Comparing Ivar and Strict Ivars

πŸ†• Mohammad A. Ali published a new article β†’ Smaller, faster serialization for Ruby apps and beyond!

πŸ†• Stanko KrtaliΔ‡ published a new article β†’ Adding MCP to a Rails app

πŸ†• MirosΕ‚aw PragΕ‚owski published a new article about Multi tenant applications with horizontal sharding and Rails Event Store

πŸ†• Ernesto Tagwerker published a new article about β†’ DIY Ruby on Rails Upgrades: Essential Open Source Tools

πŸ†• Blazej published a new article about My Journey Through The Odin Project’s Chess Game

How-TOs πŸ“

πŸ“ Rails Designer published a new article about Recurring Calendar Events in Rails

Reply

or to participate.