Short Ruby Newsletter - edition 119

The one edition where Active Record Search is announced along with Ruby 3.3.7

Table of Contents

(promo)

Master Rails in 2025 with this comprehensive video course to get a better job or build your own startup. It’s a hands-on course where you’ll build an ecommerce marketplace app with step-by-step lessons and challenges:

  • βœ… Rails backend and frontend

  • βœ… Compatible with Rails 7 & 8

  • βœ… Hotwire, Stimulus, Turbo

  • βœ… Payments with Stripe including Subscription

  • βœ… Background jobs with Solid Queue and Sidekiq

  • βœ… Automated testing with Minitest, Capybara and Selenium

  • βœ… Access to full source code

  • βœ… Lifetime access

Here’s a special offer for Short Ruby Readers:

πŸš€ Launches and discounts

πŸš€ Kasper Timm Hansen announced an workshop about Guiding You through the Rails Source

πŸš€ Kyrylo Silin launched WeUseRails - Discover web apps built with Ruby on Rails

πŸš€ PaweΕ‚ DΔ…browski shared the waitlist for his new book High-Performance Active Record

Source: @pdabrowski6

πŸš€ RailsDesigner launched a new project https://railsstats.com (read there the launch article - Introducing Rails Stats)

πŸš€ Rich Steinmetz is looking for people to do Tandem coding for side projects

Source: @RichStoneIO

πŸ“… Events

πŸ“… Arkency launched a new workshop β€œFrom React to Hotwire An Unexpected Journey”

Source: arkency.com

πŸ“… Rails Camp Usa registration is live! Get your early bird tickets now.

πŸ“† Checkout the list of events happening this week at https://rubyconferences.org/meetups where you can also see the upcoming conferences and open CFPs.

πŸ‘‰ All about Code and Ruby

πŸ‘‰ Jorge Manrubia announced they are working Active Record Search at 37Signals part of a new project they are preparing:

Source: @jorgemanru

πŸ‘‰ Takashi Kokubun announced a new version of Ruby 3.3.7 Released

Source: @k0kubun

πŸ‘‰ Victor Shepelev published at the beginning of this month the Ruby 3.4 Changes - a great review of what changed in Ruby 3.4 with good examples and references to Ruby tracker. I strongly recommend reading this to get updated with the most significant changes happening in Ruby 3.4.

He also published an article about the process to create this Ruby changes β†’ The short outburst of activity during Ruby Changelog preparationβ€”2025 edition 

He published a thread with his most important articles from 2024 about Ruby:

πŸ‘‰ Jean Boussier published the last article in his series about ruby/json optimization. I recommend reading all of them. They are a great read and you will learn a ton about Ruby and optimisations and how to approach this kind of task:

πŸ’» Code Samples

οΈπŸ’» ️Ruby Cademy shared a code sample on how to use in? predicate outside of arrays

Source: @RubyCademy

πŸ’» Jean Boussier shared a benchmark about performance difference between directly calling a method and using send :

Benoit Daloze added benchmarks for TruffleRuby:

πŸ’» Gregory Brown shared a riddle asking what improvement can be added at line 20:

πŸ’» Prem Sichanugrist shared about how using if/then when the if has multi-line conditions looks better:

Source: @sikac.hu

πŸ’» ️Jonathan Frias shared a tip on why to prefer subqueries over joins in scopes

️Robert Peralta added:

οΈπŸ’» Brad Gessler discusses when to not use β€˜it’ which os introduced in Ruby 3.4

Source: @bradgessler

οΈπŸ’» Ruby Cademy shared a tip on Rails’ added support for SQL column aliases using hashes in select!

Source: @RubyCademy

οΈπŸ’» PaweΕ‚ DΔ…browski shared a rails console trick to check method source

Source: @pdabrowski6

οΈπŸ’» Karol BΔ…k shared a tip to reduce test suite execution time

Source: @kukicola

οΈπŸ’» Ruby Cademy shared how to setup β€˜ap’ as default IRB renderer

Source: @RubyCademy

(ad)

Drowning In Support Tickets? Maven AGI is here to help.

Maven AGI platform simplifies customer service by unifying systems, improving with every interaction, and automating up to 93% of responses. Seamlessly integrated with 50+ tools like Salesforce, Freshdesk, and Zendesk, Maven can deploy AI agents across multiple channelsβ€”text, email, web, voice, and appsβ€”within days. Companies like Tripadvisor, ClickUp, and Rho slash response times by 60%, ensuring quicker support and exceptional customer satisfaction. Don’t let support tickets slow you down

πŸ’» David shared a code sample on token_list helper

Source: @dcyoung.dev

πŸ’» Ufuk Kayserilioglu shared a code sample about ruby autosplatting of block arguments

Source: @ufuk.dev

οΈπŸ’» Matt Swanson shared an insight from reading the Campsite code:

Source: @_swanson

πŸ“ Thinking about Code Design

οΈπŸ“οΈ Gavin Morrice talks about how code that relies on service objects usually has tight coupling between two architectural layers.

οΈπŸ“ Nate Berkopec shared about SPAs vs Turbo/HTMX:

οΈπŸ“ Matt Swanson discusses the challenges and potential pitfalls in implementing a feature to "resend an invite if not accepted after one week.

Source: @_swanson

πŸ“ Sulman Baig shared a thread about Rails 8 CRUD development. I added here just the beginning of that thread:

οΈπŸ“ Paul Kim asked about experience with Hotwire:

Source: @pkayokay

Here are some replies:

Source: @WickNarwick

Source: @ffaebi

Source: @robzolkos

Source: @APIguy

Source: @lreszke

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

πŸ’‘ Maciej Mensfeld shared a rails update that eliminate allocations on Model.respond_to? calls

πŸ’‘ Paul Kim asked about recommendation for gems:

Source: @pkayokay

Here are some recommendations:

  • active_link_to - "Helpful method when you need to add some logic that figures out if the link (or more often navigation item) is selected based on the current page or other arbitrary condition"

  • avo - "Avo is a very custom Content Management System for Ruby on Rails that saves engineers and teams months of development time by building user interfaces and logic using configuration rather than traditional coding; When configuration is not enough, you can fallback to familiar Ruby on Rails code."

  • brakeman - "Brakeman detects security vulnerabilities in Ruby on Rails applications via static analysis."

  • bundler-audit - "bundler-audit provides patch-level verification for Bundled apps."

  • database_consistency - "Provide an easy way to check the consistency of the database constraints with the application validations."

  • devise - "Flexible authentication solution for Rails with Warden"

  • erb_lint - "ERB Linter tool."

  • fancy_irb - "A fancy IRB has rocket-style #=> return values and colorful prompts and streams."

  • friendly_id - "FriendlyId is the "Swiss Army bulldozer" of slugging and permalink plugins for Active Record. It lets you create pretty URLs and work with human-friendly strings as if they were numeric ids."

  • good_job - "A multithreaded, Postgres-based ActiveJob backend for Ruby on Rails"

  • hotwire_combobox - "An accessible autocomplete for Ruby on Rails apps using Hotwire."

  • hotwire-spark - "A live reloading system that updates just what's needed to offer a smooth experience."

  • inline_svg - "Get an SVG into your view and then style it with CSS."

  • interactor - "Interactor provides a common interface for performing complex user interactions."

  • local_time - "Rails engine for cache-friendly, client-side local time"

  • meta-tags - "Search Engine Optimization (SEO) plugin for Ruby on Rails applications."

  • minitest - "minitest provides a complete suite of testing facilities supporting TDD, BDD, mocking, and benchmarking"

  • nocheckout - "Rails controllers for Stripe Checkout Sessions and Webhooks"

  • nopassword - "NoPassword is a toolkit that makes it easy to implement temporary, secure login codes initiated from peoples' web browsers so they can login to Rails applications via email, SMS, CLI, QR Codes, or any other side-channel."

  • og - "Object Graph (Og) is a state of the art ORM system. Og serializes standard Ruby objects to Mysql, Postgres, Sqlite, KirbyBase, Filesystem and more."

  • omniauth-oauth2 - "An abstract OAuth2 strategy for OmniAuth."

  • overmind - "Overmind is a process manager for Procfile-based applications and tmux."

  • pagy - "Agnostic pagination in plain ruby. It does it all. Better."

  • phlex - "A high-performance view framework optimised for fun."

  • pundit - "Object oriented authorization for Rails applications"

  • ransack - "Ransack is the successor to the MetaSearch gem. It improves and expands upon MetaSearch's functionality, but does not have a 100%-compatible API."

  • strong_migrations - "Catch unsafe migrations in development"

  • stylecheck - "Runs code style check on Ruby and SCSS files."

  • superform - "A better way to customize and build forms for your Rails application"

  • superview - "Build Rails applications entirely out of Phlex components."

  • view_component - "A framework for building reusable, testable & encapsulated view components in Ruby on Rails."

❀️ Why Choose Ruby and Rails

❀️ Chime into what Kelly Sutton has to say about his switch from React to Stimulus

Source: @KellySutton

❀️ Avi Flombaum shared about using Rails instead of other external services:

Source: @aviflombaum

🧰 Gems, Libraries, Tools and Updates

πŸ†• New Gems and Repos

πŸ†• Landon Gray announced a new repository from their AI training: ruby-ai-search-training

🧰 Updates

🧰 Adrian Marin announced a that Avo passed over 1M downloads:

🧰 Ruby Gems announced a new version 3.6.3 Released

🧰 Koichi Ito announced the release of RuboCop Rails 2.29.0

Source: @koic

🧰 Jeremy Evans announced new version release Tilt 2.6.0

🧰 Ryan Nystrom shared that the campsite codebase is now open source

Source: @thoughtbot

Source: @kirplatonov

🧰 Charles Oliver Nutter announced a new version of psych 5.2.3

🀝 Russ Olsen shared about explaining technical topics:

🀝 Andrew Atkinson shared a benchmark of using UUID v4 vs bigint:

🀝 Avi Flombaum talks about how AI would augment programmers, rather than replacing them

Source: @aviflombaum

🀝 Ahmed Nadar shared a thread on weekly book club for Junior devs

Source: @ahmednadar

 

🀝 Simon Chiu shared about building:

Source: @geetfun.com

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

πŸ—ž Newsletters

πŸ—ž Ruby Weekly published a new article about All the language changes in Ruby 3.4

πŸ—ž Hotwire Weekly published a new article about Week 03 - Hotwire Webinar, Reflecting on React To Hotwire Migration, and more!

πŸ—ž Sajjad Umar published a new edition of their newsletter about Ruby on Rails β€” Jan 2025

πŸ—ž Awesome Ruby Newsletter published a new article about πŸ’Ž Issue 452 - A simple trick to understand Ruby’s lazy enumerator

🎧 Podcasts

🎧 David Hill published a new episode about Ben Greenberg - Ode to RailsConf

🎧 Jason Charnes, Chris Oliver, Andrew Mason published a new article about Inside Ruby 3.4

πŸ“½οΈ πŸŽ₯ Videos

πŸŽ₯ EuRuKo published the videos from 2024 EuRuKo Conference: Day 1, Day 2 and Day 3. You can also see them on RubyVideo 

πŸŽ₯ Drifting Ruby published a new video about ViewComponent

πŸŽ₯ Malachi Rails published a new video about Rails 8 Course - Beginner to Intermediate

πŸŽ₯ Chris Oliver published a new video on What can you expect from the new params.expect() in #Rails 8?

πŸŽ₯ Yaroslav Shmarov published a new video about Global app settings with gem rails-settings-cached #224

πŸŽ₯ Malachi Rails published a new video about How to Deploy Rails 8 with Kamal to Digitalocean

✍🏾 Articles

What’s new πŸ†•

Kelly Sutton published a new article about Moving on from React, a Year Later

Kevin Murphy published an article about What Is It (in Ruby 3.4)?

Scott Chacon published an article about Why is Git Autocorrect too fast for Formula One drivers?

Nithin Bekal published an article about What's new in Ruby 3.4

Justin Searls published an article A real-world example of a Mocktail test

Michiharu Ono published an article on When Controllers Take on Too Much Responsibility

Jean Boussier published an article about Optimizing Ruby’s JSON, Part 6 and Optimizing Ruby’s JSON, Part 7  finalising their series about optimizing Ruby JSON.

Avinash Joshi published an article about Implementing a Referral System in Rails

Exequiel Rozas published a new article about Better image placeholders with Blurhash in Active Storage - Avo

Prasanth Chaduvula published a new article Rails 8 Now Uses ISO 8601 Style Time For TimeWithZone#inspect

Maxime Chevalier-Boisvert published a new article about YJIT 3.4: Even Faster and More Memory-Efficient

James Hibbard published a new article about Useful things you can do with Rails console

Anna Zykova published an article about The RubyMine 2025.1 Early Access Program Is Open!

Sulman Baig published an article about Rails 8 CRUD: Modern Development Guide 2025

Saeloun Blog published a new article about Rails 8 Now Uses ISO 8601 Style Time For TimeWithZone#inspect.

PaweΕ‚ Urbanek published an article about Lessons Learned Migrating my SAAS to Rails 8

Adam McCrea published a new article about Too Many Connections in PostgreSQL? How to Avoid This Common Error

PaweΕ‚ DΔ…browski published an article about Metaprogramming meets deterministic probability - under the hood of

DΓ©lon Newman published an article about ruby -run, again

Kallin Nagelberg published an article about Understanding Complexity Density: A New Approach with RuboCop

How-TOs πŸ“

Josef Strzibny published a new article about Adding button loader to Turbo-powered forms

Daniela Baron published an article about Datadog APM for Rails on Heroku

JoΓ«l Quenneville published a new article about How to infer the form method for custom objects in Rails

William Kennedy published a new article about Up and Running with Hotwire Native Android Part 4 - Bridge Components

Jonathan Rochkind published a new article about Using CloudFlare Turnstile to protect certain pages on a Rails app

Zeke Gabrielse published a new article about No calls

Reply

or to participate.