Short Ruby Newsletter - edition 128

The one where TruffleRuby 24.2 is released, JRuby 10 is getting close, a Rails MCP server is introduced, and where Stan Lo shows a Ruby MCP server powered by Ruby LSP

In partnership with

Table of Contents

(ad)

πŸ‘‹ If you’re running a small online business, stop scrollingβ€”this might be the most important thing you read today.

Your company’s success comes down to one thing: talking to customers. Not just β€œsupport”—actual conversations that drive sales, retention, and product insights. But most help desk tools weren’t built for small, scrappy teams like yours. They’re expensive, clunky, and make it harder to just… talk.

As a small team of six, we know the importance of customer conversations better than anyone. That’s why we built Jelly - an email inbox for your team. It’s simple, delightful, and priced for small teams. Whether you call it customer support or just doing business, customer conversations decide whether your company survives. Jelly helps you get them right.

Use SHORTRUBY15 to get the 15% discount πŸ‘‡

πŸ“… Events

πŸ“… Balkan Ruby announced full lineup on their current lineup balkanruby.com

πŸ“… Baltic Ruby announced that tickets are now available for this year's event at balticruby.org βœ¨

πŸ“… Lukasz Reszke announced an interesting webinar about Rescuing Ruby on Rails Applications. If you’re interested, reserve your spot right here πŸŽ«

πŸ“… Ganesh K. announced a new event to bring together the community of Ruby developers from Nepal. Here you can join for more details β†’ Ruby on Rails Meetup

Source: @gkunwar1

πŸ“… Brighton Ruby is set to happen on June 19th. Grab a ticket and do not miss this opportunity 🎟️ brightonruby.com 

πŸ‘‰ All about Code and Ruby

πŸ‘‰ Ilya Bylich published a new comprehensive article about Ruby, Ractors, and Lock-Free Data Structures

πŸ‘‰ Truffle Ruby announced a new release TruffleRuby 24.2.0

πŸ‘‰ Charles Oliver Nutter shared that JRuby 10 is very close to being realeased

Source: @headius

 πŸ‘‰ JΓ΄natas Davi Paganini published Benchmarking Ruby ORMs

πŸ’» Code Samples

οΈοΈπŸ’» Joel Drapper shared his wish for cleaner function currying in Ruby, demonstrating an approach using functions that gradually build immutable structures

πŸ’» Carmine Paolino demonstrated Ruby's concurrency capabilities by running parallel AI calls with RubyLLM and Async. If you’re curious, you can read more about RubyLLM here βœ¨

Source: @paolino

πŸ’» LΓ‘zaro Nixon shared a useful Hotwire pattern: create a submitter for each JavaScript event, connect it using a Stimulus controller, and update content with Turbo Streams:

Source: @lazaronixon

Source: @lazaronixon

Source: @lazaronixon

Source: @lazaronixon

πŸ’» Gregory Brown shared an interesting Ruby syntax quirk puts(1 if true) raises a SyntaxError, while puts((1 if true)) works fine, despite appearing equivalent πŸ”§

πŸ’» Evil Martians shared a new feature that allows adding user presence tracking to Hotwire apps with minimal code by using turbo-cable-presence-source and AnyCable

πŸ’» Hans Schnedlitz shared a code sample about pattern matching on Time ⏰

Source: @hschnedlitz

οΈπŸ’» Ruby Cademy shared how to scope Rails routes with dynamic parameters to capture locale information

Source: @RubyCademy

οΈπŸ’» Zeke Gabrielse expressed appreciation for modern Ruby, sharing code that elegantly handles user role synchronization with an identity provider

Source: @_m27e

πŸ’» Lucian Ghinda shared an in-depth exploration of implementing value objects in Ruby, covering immutability, Ractors, and pattern matching with the Data class. You can either check the full thread on Bluesky or the video version of it on YouTube

οΈπŸ’» Scott Watermasysk shared a Ruby ActiveSupport tip: Date.current.all_week returns the full week’s date range πŸ—“οΈ

Source: @scottw.com

οΈπŸ’» Josef Strzibny shared a code sample about interactive sessions with Kamal 🚒

Source: @strzibnyj

οΈπŸ’» Bijan Rahnema suggested using Rails' message_verifier instead of storing login tokens in databases for better security and simplicity ⛓️

πŸ’» Zeke Gabrielse shared a common Rails quirk with session management that he previously documented on Stack Overflow πŸ‘€

Source: @_m27e

οΈπŸ’» Saeloun showed how to efficiently run bulk migrations in Rails using validate_check_constraint with the change_table method

Source: @HiSaeloun

οΈπŸ’» Xavier Noria shared an interesting Ruby hash behavior where hash[1.0] = 1 works, but hash[1] returns nil

οΈπŸ’» Angel shared a useful Rails tip: you can run bin/rails notes to find all TODOs, FIXMEs, and other notes left in your code

πŸ’» Bradley Schaefer shared an RSpec technique using compound expectations with the & operator to test multiple string conditions in a single assertion

οΈπŸ’» Alex Yarotsky demonstrated a cleaner approach to column aliasing in ActiveRecord by using hash syntax instead of SQL fragments

οΈπŸ’» Charles Oliver Nutter shared that Ruby 3.4 includes an error_highlight gem for better error messages with code context, noting it's not yet compatible with JRuby but suggesting an approach to implement it

Source: @headius

πŸ’» Alex Yarotsky highlighted ActiveRecord’s .missing method for easily finding records with missing relations

οΈπŸ’» Ruby Cademy showcased using add_check_constraint in Rails migrations for database-level validation that prevents bad data from entering your system

Source: @RubyCademy

οΈπŸ’» Samuel Williams expressed surprise at discovering VNC sessions can be run through Falcon+WebSockets and even helped Cedric improve his code:

Source: @ioquatix

⚑️ Here is the final code sample of Cedric after the improvement

οΈπŸ’» Ruby Cademy highlighted Rails 8's new attribute_writer_missing feature that helps handle legacy field data when transitioning to new database structures

Source: @RubyCademy

οΈπŸ’» Adrien Siami shared an intriguing code sample about dynamically generating configuration methods, later following up with an explanation of how it works 🧐

Source: @Intrepidd

Source: @Intrepidd

οΈπŸ’» Ruby Cademy highlighted a new feature in Rails 7.1 that shows source locations in rails routes --expanded output, making it easier to find where each route is defined

Source: @RubyCademy

πŸ“ Thinking about Code Design

οΈπŸ“ Adam McCrea shared a cheatsheet for scaling Sidekiq with five key tips: use fewer queues, keep jobs small, balance concurrency settings, autoscale based on queue latency, and isolate resource-heavy jobs

οΈπŸ“ Xavier Noria shared his first interaction with protected modifier in Ruby, using it for recursive tree traversal between class instances

Joel and Ismael responded with their own use cases for protected modifier 🎢

Source: @joel.drapper.me‬

Source: @ismaelcelis.com‬

οΈπŸ“ JΓ΄natas Davi Paganini shared impressive benchmark results comparing Ruby ORMs, highlighting Sequel's significant performance advantages over ActiveRecord. You can go and read the full results on his blog post

Source: @jonatasdp

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

πŸ’‘ Stan Lo demonstrated a proof of concept for a Ruby MCP server powered by Ruby LSP that integrates with the Cursor agent

Source: @st0012.dev

πŸ’‘ Ahmed Benh shared some insights about AI models for Ruby development. He also shared a blog post with more details about each AI model performance, which is worth checking out β†’ What are the best LLMs for Java, Go and Ruby ?

Source: @Ahmedbenh1

πŸ’‘ Mari Imaizumi announced becoming a Ruby committer, focusing on String, Encoding, and Regexp areas after previous work with IRB and Reline

Source: @ima1zumi

πŸ’‘ Rob Zolkos recommended a Cursor rule file for Rails projects from the MaybeFinance, where you can immediately check it out here πŸ‘€

Source: @robzolkos

❀️ Why Choose Ruby and Rails

❀️ Irina Nazarova noted that many top companies use Rails due to its advantages for rapid product development

Source: @inazarova

❀️ Marco Roth highlighted the growth in tech conferences and meetups, noting that Ruby and Rails continue to be enjoyable to work with

Source: @marcoroth_

❀️ Gabriel observed that Rails encourages product-focused thinking and simpler implementations compared to other frameworks

❀️ Mathieu Bp expressed excitement about Rails 8 for app development and how RubyLLM will make building AI applications as straightforward as regular apps

Source: @_mathieubp

❀️ Dimitri Bosch shared his love for Turbo, praising its impact on Rails development and hoping for future improvements

🧰 Gems, Libraries, Tools and Updates

πŸ†• New Gems and Repos

πŸ†• Mario Alberto ChΓ‘vez created Rails MCP Server, a tool that gives Claude AI direct access to Rails projects without manual code copying. He also shared a blog post with an in-depth explanation of this gem that's worth checking out β†’ Rails MCP Server blog πŸ€—

πŸ†• Andy Maleh built a custom database GUI for his Ruby on Rails application to simplify SQL queries. Here you can try this gem β†’ db-gui

🧰 Updates

🧰 Carmine Paolino announced a new version of ruby_llm πŸ€–

🧰 Andrei Kaleshka announced an update for actual_db_schema

🀝 Gregory Brown compares exception handling to electrical circuits, explaining how different error responses can either halt or signal issues in software operations

🀝 Cat announced a major week for Claude Code, launching 8 new features to help developers build faster and smarter. Is highly recommend to check the full thread 

Source: @_catwu (check full thread on X)

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

πŸ—ž Newsletters

πŸ—ž Ruby Gems published a new update about February 2025 RubyGems Updates

πŸ—ž Ruby Weekly published a new article about Ruby debugging tips for 2025

πŸ—ž Hotwire Weekly published a new article about Week 12 - AnyCable 1.6 is here, Turbo declarative presence tracking, and more!

πŸ—ž Awesome Ruby Newsletter published a new article about πŸ’Ž Issue 461 - The Ultimate Guide to Scaling Sidekiq

🎧 Podcasts

🎧 IndieRails posted a new podcast Ben Curtis & Josh Wood - Kids These Days

🎧 Code and the Coding Coders who Code it published a new podcast Episode 48 - Adam Wathan

🎧 PragProg published a new podcast about Hotwire Native for Rails Developers with Joe Masilotti  

🎧 The Bike Shed published a new episode about 457: Time Zones with Sally Hall

🎧 Rails Business Podcast published a new episode about Challenges in App Integration and Data Synchronization

🎧 Chris Oliver, Andrew Mason published a new article about Mac Upgrades to Debugging Dilemmas

πŸŽ₯ Videos

πŸŽ₯ Thoughtbot published a new video about Developing a voice AI app in Rails for drive-through ordering

πŸŽ₯ Zhephyn published a new video from their new series Ruby Jr Dev Book Club - Chapters 15 -16

πŸŽ₯ Jason Swett published a new video about Wrestling with a Tricky Domain Modeling Problem - Live Coding on SaturnCI

✍🏾 Articles

What’s new πŸ†•

πŸ†• Sean Goedecke published an article about The future of AI is Ruby on Rails

πŸ†• Ilya Bylich published a new article about Ruby, Ractors, and Lock-Free Data Structures

πŸ†• Elvinas Predkelis published a new article about Ruby on Rails + Active Storage: Migrating from AWS S3 to Cloudflare R2

πŸ†• Rails Designer published a new article about JavaScript for Rails Developers is Coming Soon and about Translations in Stimulus Controllers

πŸ†• Irina Nazarova and Vladimir Dementyev published a new article about Simple Declarative Presence for Hotwire apps with AnyCable

πŸ†• Radan Skoric published a new article about Rails 8 Assets - Deep dive into Propshaft

πŸ†• Reinteractive published a new article about Instant Rails Turbo Updates | Easy Live Pages

πŸ†• Avo published a new article about Adding confetti to an app with stimulus-confetti

πŸ†• Lucian Ghinda published a new article about How to create value objects in Ruby - the idiomatic way

πŸ†• Louis Antonopoulos published a new articlea about content_for -- What is it good_for?

πŸ†• Kuba Suder posted a new article about Speeding up the firehouse

πŸ†• JΓ΄natas Davi Paganini published a new blog Benchmarking Ruby ORMs

πŸ†• Jean Boussier published a new article about Database Protocols Are Underwhelming

πŸ†• Richard Schneeman published a new article about Installing the sassc Ruby gem on a Mac. A debugging story

πŸ†• Fritz Meissner published a new article about ActiveRecord query log tags for GraphQL

How-TOs πŸ“

Kevin Murphy published a new article about Preserving Flash Messages in Rails

✍️ Codeminer42 posted a new blog about JavaScript Beginner’s Guide

✍️ Daniela Baron published an article about Cover Letter Writing for Nerds

Reply

or to participate.