Short Ruby Newsletter - edition 131

The one where Ruby 3.3.8 is released, where Charles Nutter shares about what's new in JRuby 10 and where we find out that Ex-CEO and Buildkite’s cofounder started streaming Ruby coding on Twitch

In partnership with

Table of Contents

(ad)

🚀 Launches and discounts

🚀 Donn Felker announced the release of Gramifier, his first "vibe coded" utility app that creates simple, clean Instagram images from X posts and quotes. He built it using Middleman, Stimulus JS, and Tailwind, and deployed it within hours. If it piqued your curiosity, you can try it right away → Gramifier

🚀 Nate Berkopec announced a 20% discount on The Speedshop retainer service for April, offering Ruby application performance optimization. Go on speedshop.co and check this offer in more detail

📅 Events

📅 Kasper Timm Hansen announced his Rails deep-dive session happening Thursday, promising to compress 6-8 hours of learning into a 90-minute workshop. If you are interested, here you can save your spot and gain all the knowledge→ Guiding You through the Rails Source Workshop ✈️

📅 Rails Conf announced that the schedule for this year event is now live. Here you can check the entire schedule more easily → RailsConf 2025 Schedule

Source: @railsconf

📅 XO Ruby is inviting developers of all levels who want to learn or refresh their Rails knowledge to join their book club reading 📖

Source: @xoruby.com

👉 All about Code and Ruby

👉 Nagachika announced the release of Ruby 3.3.8 

👉 Charles Oliver Nutter wrote about JRuby 10, Part 1: What's New

👉 Exequiel Rozas from Avo published an article about Adding Structured Data to a Rails application

💻 Code Samples

💻 Andrei Kaleshka shared his experience with Ruby's endless method definitions, showing how they make specialized wrapper methods more elegant and readable in his dose calculation code

💻 Xavier Noria shared a Ruby insight about how nested class and module keywords don't create actual nesting in the names or constants

Later Xavier Noria added:

💻 Bhumi shared a tip about the “rails runner” command, which allows you to execute Ruby code in a fully initialized Rails environment without having to start a Rails console

💻 Nick Schwaderer showed how Ruby's “or” operator can lead to unexpected variable assignments, with variables being set even within logical expressions

Source: @schwad_rb

And Dennis showed how Ruby's “||” operator behaves differently from “or” when assigning variables

Source: @djfpaagman

💻 Ruby Cademy shared a useful Rails tip about creating temporary SQL tables in migrations using “temporary: true”, which is perfect for short-lived data needs like calculations or data transformations

Source: @RubyCademy

💻 Hans Schnedlitz shared that you can run Kamal Proxy alongside Nginx for gradually migrating apps, just making sure to use non-conflicting ports in your configuration

️💻 Ruby Cademy highlighted “up_only” as a valuable ActiveRecord migration method that lets you specify operations that run only when migrating up

Source: @RubyCademy

️💻 Ruby Cademy showcased the Builder-to-Proc pattern, one of their favorite Rails patterns. It demonstrates how to convert builder classes to procs for transforming raw data (like API responses) into objects through a simple “to_proc” method, making data mapping more elegant

Source: @RubyCademy

💻Hans Schnedlitz shared a useful Ruby pattern for making gems easily configurable. The pattern uses a dynamically created Configuration class with “attr_accessors”, a singleton configuration instance, and a configure method that yields the configuration to a block 👀

💻 Alba Rosttöpfer shared her appreciation for RubyLLM's clean API, showing a simple code example that demonstrates how to use it for image description

Source: @TryCandyCV

📐 Thinking about Code Design

️📐 Joel Drapper showed how branded types work in Literal, demonstrating email address type constraints. If you want to read more, he mentioned more details on this take here → joeldrapper/literal/pull/303

📐 Gavin Morrice explained how good code design provides inherent flexibility, challenging the notion that simpler always means better in software development

️📐Robby Russell proposed a scenario where Rails developers can ask meaningful, technical questions to a more experienced developer from a larger company, encouraging deep, practical learning beyond typical surface-level discussions

And here are some potential questions posted by his community 🧐

Source: @Zeko369

Source: @kaokun

Source: @pan_sarin

📐 Juraj Kostolanský asked his community about the best method to preload the latest message in a Ruby on Rails application

He got some interesting solutions 🤩:

Check this gem → activerecord-has_some_of_many - “Optimized top-N-per-group Active Record associations using lateral joins“

Source: @kevin8b8

Source: @jakeonrails

Source: @bhserna

💡Around code (news, findings, books, and more - all about Ruby)

💡 Keith Pitt ex Twitch CEO started streaming Ruby coding on Twitch:

💡 Nauman Tariq invited Ruby and Rails developers to share their most memorable, timeless technical resources for a curated collection

Here are some of the resources included in this post:

💡 Svyatoslav Kryukov announced a community-driven page to showcase Inertia Rails resources, inviting developers to share their work and contributions → Awesome Inertia Rails

💡 William Kennedy highlighted the UK government's design system, praising its comprehensive approach with minimal JavaScript and strong accessibility considerations. Check their page for more insights → GOV.UK Design System

❤️ Why Choose Ruby and Rails

❤️ Ivan Morgillo shared his journey of transitioning from Android development to Rails, highlighting the freedom of web development and the changing landscape of software creation

Source: @hamen

❤️ Ruby Cademy showcased a helpful Rails code snippet demonstrating date comparison methods, highlighting the elegance of Ruby's active support helpers

Source: @RubyCademy

🧰 Gems, Libraries, Tools and Updates

🆕 New Gems and Repos

🆕 Matthias Grosser published a new gem nodo - "Fast Ruby bridge to run JavaScript inside a Node process"

🆕 Georgie Boy created a new gem → rails_svelte - “Svelte Starter Template for Ruby on Rails“

🆕 Anthropic launched a new gem → anthropic-sdk-ruby

🧰 Updates

🧰 Carmine Paolino announced a new version of ruby_llm - “A delightful Ruby way to work with AI. No configuration madness, no complex callbacks, no handler hell – just beautiful, expressive Ruby code”

🧰 Andrei Kaleshka released an update on actual_db_schema - “Wipe out inconsistent DB and schema.rb when switching branches. To do that, install this gem and use the standard rake db:migrate command“

🧰 Jeremy Evans announced a new version of roda - “Routing Tree Web Toolkit“

🧰 Brian Knoles announced a new version of inertia-rails - “The Rails adapter for Inertia.js“

🤝 Andrew Culver shared a shell script trick for creating quick aliases to navigate project directories, improving development workflow efficiency

And his community provided some recommendations 💪

zoxide - A smarter cd command. Supports all major shells

zsh-z - Jump quickly to directories that you have visited "frecently." A native Zsh port of z.sh with added features

Source: @dpaluy

autojump - A cd command that learns - easily navigate directories from the command line

🤝 Nate Berkopec highlighted a significant web performance insight, explaining how making all JavaScript on a page asynchronous can effectively eliminate Largest Contentful Paint (LCP) issues. Here is the link he provided for async

🤝 Tobi Lutke shared an internal Shopify memo highlighting the company's commitment to integrating reflexive AI usage as a standard expectation for supporting merchants and entrepreneurs. Here is just a part of the article, you can read it entirely on Twitter for more insights 👀

Source: @tobi

More content: 📚 🗞 🎧 🎥 ✍🏾

🗞 Newsletters

🗞 Ruby On Rails published a new edition → Refactoring Active Record Signed ID verifiers

🗞 Ruby Weekly published a new edition about JRuby 10 begins to appear

🗞 Awesome Ruby Newsletter published a new edition about Issue 464 - Shopify CEO says no new hires without proof AI can’t do the job

🎧 Podcasts

🎧 David Hill posted a episode → Ode to RailsConf - Fable Tales

🎧 Maintainable Software Podcast posted a new episode → Mercedes Bernard: Friendly Code Welcomes Everyone In

🎧 The Bikeshed published a new episode about 458: Learning Typescript with Aji Slater

🎧 Remote Ruby published a new episode about Ryan Castillo of Knowatoa and More Listener Questions

🎧 The Ruby On Rails Podcast published a new episode about Episode 534: Good Enough with James Adam and Cade Truitt

🎥 Videos

🎥 Nate Berkopec published a new video → Let's take a look at Gumroad's recently open-sourced codebase

🎥 Dave Kimura published a new article about Boolean vs Datetime

🎥 Chris Oliver published a new article about How to use CodeMirror with ImportMaps

🎥 QuantumFire published a new video about Using Grok 3 to build a Grok version of Claude Code

🎥 Scott Werner published a new article about Wasting Inferences With Aider

✍🏾 Articles

What’s new 🆕

🆕 Charles Oliver Nutter published a new article → JRuby 10, Part 1: What's New

🆕 Radan Skoric published a new article → 8 Assets: Adding a bundled package alongside vanilla setup

🆕 Julik Tarkhanov published a new article → Template-Scoped CSS in Rails

🆕 Exequiel Rozas from Avo published a new article about Resize Observer API with Stimulus and Adding Structured Data to a Rails application

🆕 Richard Schneeman published a new article about Migrating Your Ruby Apps to the Latest Stack

🆕 Josef Strzibny published an article about Design system options for Rails | Business Class Blog

🆕 Joël Quenneville published a new article → Ruby Strings: DnD Alignment chart

🆕 Emanuel Facundo published a new article → 🛠 How I Reduced Product Page Load Time by Nearly 85%

🆕 Davide Santangelo published a new article → Train Your Own LLM: A Deep Dive with Ruby

🆕 Kendra Riga published a new article about Solidus Permissions

🆕 Andres Chacon published a new article about Automatic API Documentation for Rails with OasRails and AI: Fast and Easy

🆕 Alessandro Dias Batista published a new article about How does Rack work?

How-TOs 📝

📝 Steve Polito published a new article about How to respect OpenAI's rate limits in Rails

📝 Szymon Fiedler published a new article about Installing Precompiled Native Gems with bundle lock --add-platform

✍️ Jorge Manrubia published a new article → 37signals

✍️ Rails Designer published a new article about Console Utilities You (Didn’t) Know

Reply

or to participate.