#​662 — July 13, 2023

Read on the Web

Together with  FastRuby.io

Ruby Weekly

defp: Proposing a Way to Define Overloadable, Pattern Matched Methods — Few language proposals made on Ruby’s issues board make it to fruition, but with pattern matching becoming increasingly more relevant in Ruby, this is an interesting idea and builds on earlier thoughts by Victor Shepelev.

Zeke Gabrielse

Integrating Web Push with Rails — The mechanism and protocols behind implementing push-based Web notifications are complicated, so it’s fantastic that Sam has put together a complete post showing the main steps and code involved to add push notifications to a modern Rails app.

Sam Ruby

💸 Budget-Friendly Rails Maintenance Starting at $1k/Month 🚀 — Don't want to lose 25% of your efficiency to tech debt? FastRuby's remediation services gradually upgrade core dependencies and refactor costly files. The team behind the RailsConf Rails Upgrade Workshop can help you level up for a monthly flat-rate.

Bonsai 🌳 by FastRuby.io sponsor

Steep 1.5: A Static Type Checker for Ruby — Ruby 3.0’s introduction of the RBS type signature language teased a world of statically type-checked Ruby for those who wanted it, but another piece is required: a tool to *do* the type checking. Enter Steep.

Soutaro Matsumoto

📅 RubyConf is taking place this November in San Diego, CA and its call for papers is now open. You've got till August 20 to propose either a talk or workshop.

🤔 Justin Searls ponders "the looming demise of the 10x developer" – an article that will give you some food for thought, even if you disagree.

🍏 Julia Evans shows off Lima, a particularly quick and easy way to spin up Linux VMs on macOS. (A VM is just two commands away if you use Homebrew or Nix..)

🤖 I recently linked to a gem that adds vector querying features to SQLite and promised to share some code that uses it to store and compare LLM embeddings. Here is that code. I'll write an actual blog post in due course ;-)

🚂 A proposal for Rails to support optimistic locking without needing lock_version.

📗 And a book: Ruby on Rails Background Jobs with Sidekiq — A short book, currently in beta, published by Pragmatic Bookshelf. The author notes: “This book is based around the truth that putting code into Sidekiq jobs is almost trivial, but operating such a system is not. It requires careful design, monitoring, and understanding of how the jobs actually run.”

Dave Copeland

📕 Tutorials, Articles, and Videos

Turbo, Stimulus, Hotwire.. What's the Difference? — Rails has gained a bunch of snappily named extra pieces over the past few years, and if it’s not been clear what some of them are, or if you need to explain it to someone else, this will help.

Sid Krishnan

Implementing Rails-Like Controllers in a Non-Rails App — The latest in Akshay’s series on building a Ruby webapp from scratch (no Rails!) tackles the idea of controllers and what they actually do under the hood.

Akshay Khot

Free eBook: Advanced Database Programming with Rails and Postgres — Learn about subqueries, materialized views, and custom data types in Postgres & Rails and follow along with our examples.

pganalyze sponsor

Tweaking Emacs for Ruby Development in 2023 — Did you know Matz was a huge Emacs fan and Emacs influenced Ruby’s development and syntax? There’s a slideshow (transcript) about that.

John Hamelink

Performant Database Tree Traversal with Rails — The folks at PlanetScale (a serverless MySQL platform) needed to figure out 3 way merges for database schemas and had to work through a tree of objects in their database to find the common ancestor between two branches.

Mike Coutermarsh

How to Use enum Attributes in Rails — Enums provide a list of values to model attributes to drive consistency and make code more understandable. Not mentioned in this article is Rails 7’s improved support for using Postgres's native enum support.

Jeffrey Morhous (Honeybadger)

Fix Sneaky ArgumentErrors When Upgrading from Ruby 2 to 3
Francois Buys

Polymorphic Relationships in ActiveRecord
Dick Davis

An Introduction to Devise for Rails
Aestimo Kirina

🛠 Code & Tools

Adornable: Decorators for Ruby Methods — If you’ve ever looked at Python’s decorators or Lisp’s ‘advice’ and thought you’d like a similar way to extend Ruby methods, this is for you. I like the idea, but can’t see it catching on unless it became an official feature.

Keegan Leitz

Extralite 2: Another Way to Work with SQLite — An alternative (and faster) SQLite wrapper for Ruby that comes in two flavors: one that uses the system installed SQLite and one that bundles 3.42.0. v2.0 (quickly followed by v2.1) is a big update and includes enhanced querying possibilities and improves the Sequel adapter.

Sharon Rosner

Is Your Career Safe From AI Disruption? Future-Proof Your Career With Interview Kickstart — Join our free webinar to learn more. Don't get left behind. Transition to AI/ML roles with IK: FAANG+ AI/ML Coaches, a capstone project, and 15 mock interviews.

Interview Kickstart sponsor

Shrine 3.5: The File Attachment Toolkit for Ruby Webapps — The first minor level update in 2 years for the powerful plugin-driven file attachment/uploads system. Validations, background jobs, cloud storage integrations, and more await. GitHub repo.


Counter Culture 3.4: Fast Counter Caches for Rails Apps — Boasts numerous improvements over standard counter caches. Tested against all maintained lines of Ruby and Rails.

Magnus von Koeller

PublicSuffix: Domain Name Parser Based on the Public Suffix List — The Public Suffix List lets you break domains into their unique and common parts - for example, microsoft․com is microsoft and com, but it gets more complicated when you throw country codes, nested TLDs, and popular services into the mix.

Simone Carletti


Find Ruby Jobs with Hired — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now.