Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Ruby on Rails: Compress the complexity of modern web apps 

New Rails Foundation Guides PR, fix affected_rows for SQLite adapter and more!

Hi, it’s Vipul. Happy Friday 🎃!
Let’s explore this week’s changes in the Rails codebase.

New Guides Pull Request for review
A new guides Pull Request is up, which updates the Active Record Encryption Guide. If you are well versed in these areas, please review and submit your feedback on the PR!

We also have 2 other Guides PRs open where you can help out!

Fix affected_rows for SQLite adapter
This update refines the SQLite adapter’s affected_rows logic. It addresses two issues: #changes wasn’t reset for non-mutating queries like SELECT, while #total_changes could overcount due to…

André Arko 

fx.wtf

I’m a longtime user of jq, but its language is… not intuitive to me. I spent a lot of time searching for prewritten jq programs I can use, or reading the docs trying to figure out the exact thing that I want to do. Mostly, I think to myself “why do I have to learn a new language to manipulate JSON” every time I use it, even if my use is successful and does the thing I want.

Good news, you don’t have to learn a new language to filter JSON anymore, thanks to fx. With a docs site at the excellent domain fx.wtf, and the ability to filter interactively or by providing Javascript as arguments, fx is the program I have always wished that jq was.

justin․searls․co - Digest 

🎙️ Merge Commits podcast - Changelog: Saltiness about frostiness

Direct link to podcast audio file

Jerod and I sat down after WWDC to rifle through Apple's various announcements and dish our takes. As usual, we found a lot to like and (IMNSHO) did a better job than other commentators in ignoring the idle chatter on social media that tends to dominate WWDC discourse in favor of the more meaningful changes the keynote heralds.

You can find it on YouTube:

Appearing on: The Changelog
Recorded on: 2025-06-13
Original URL: https://changelog.com/friends/97

Comments? Questions? Suggestion of a podcast I should guest on? podcast@searls.co

justin․searls․co - Digest 

📸 I'm edge cases all the way down

I feel like everything I try to do is so weird that when it doesn't work, I'm very often the first person to run into the bugs I discover, and I just ran into a pretty good example. Pretty sure Cursor ships with system prompts designed to prevent it from inserting smart quotes into code listings, because that would normally be a bug… but it also means the agent is constitutionally incapable of writing a script that searches for and replaces smart quotes.

It has been confused about why it can't type smart quotes for quite a while now. Neat.

justin․searls․co - Digest 

🔗 20th Anniversary of Steve Jobs' Stanford Commencement Speech

In 2011, the same month Todd and I decided to start Test Double, Steve Jobs had recently died, and we both happened to watch Steve Jobs' incredible 2005 Stanford commencement speech. Among the flurry of remembrances and articles being posted at the time, the video of this speech in particular broke through and became the lodestone for those moved by his passing.

The humble "just three stories" structure, the ephemera described in Isaacson's book, and the folklore about Steve's brooding in the run-up to the speech became almost as powerful as his actual words. The fact that Jobs, the ruthlessly focused product visionary and unflinching pitchman, was himself incredibly nervous about this…

justin․searls․co - Digest 

📍 Tabelogged: 丸万焼鳥 本店

I visited 丸万焼鳥 本店 on June 13, 2025. I gave it a 3.8 on Tabelog.

Giant Robots Smashing Into Other Giant Robots 

Meet thoughtbot at Brighton Ruby 2025

Brighton Ruby 2025 is a few days away and the thoughtbot team is looking forward to meet you all in real life, learn from fantastic talks, and enjoy a day of seaside joy. Brighton Ruby is one of our favourite events — a single-track, single-day conference packed with great energy and great people.

This year we will have two thoughtbotters attending:

Rob's picture

Rob is a developer based in Holmes Chapel, Cheshire and most likely you have seen him already in Brighton Ruby or other conferences.

He has a not-so-quiet obsession with best practices and striving for improvement. He likes to hunt down delicious beers and coffee in his spare time. Despite the recent ups and downs, he’s an avid Stoke City…

Hi, we're Arkency 

Batch mapper in RailsEventStore - how initial idea evolved into experimental feature

Batch mapper in RailsEventStore - how initial idea evolved into experimental feature

Some time ago, Bert who uses RES in his project has reached out to us with a performance issue. The data in his event store database are encrypted. RailsEventStore provides an EncryptionMapper to handle encryption/decryption of domain events’ data. However, in this case the simple use of it caused performance issues.

Idea

The EncryptionMapper gets a keys repository as a dependency, and for each event to encrypt/decrypt (or even for each attribute), it might ask the key repository for an encryption key. That was unfortunate because Bert’s system keeps the encryption keys in an external KMS storage - which…

justin․searls․co - Digest 

🔗 It's too easy for foreigners to buy property in Japan

If you just read this month's newsletter, you might have gotten the impression whoa, it's really hard as a foreigner to buy property in Japan. And the fact it took me over a month, mostly on-site, to enter into contract to buy a condo in cash should serve as ample evidence of that.

However, multiple seemingly conflicting things can be true at once, and Bloomberg's Gearoid Reidy calls out several great points in a saucy column (archive link) which he wrote after I got myself into this mess:

But increasingly, the spotlight is falling on foreign buyers, particularly wealthy Chinese, seeking a safe place for their capital and drawn by Japan's political stability and social safety net.…

justin․searls․co - Digest 

📍 Tabelogged: しらす丼と海鮮の店 次郎丸

I visited しらす丼と海鮮の店 次郎丸 on May 13, 2025. I gave it a 3.5 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: 焼肉 うしなり

I visited 焼肉 うしなり on May 13, 2025. I gave it a 3.7 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: Cherry Beans P

I visited Cherry Beans P on May 13, 2025. I gave it a 3.8 on Tabelog.

Awesome Ruby Newsletter 

💎 Issue 473 - Build a minimal decorator with Ruby in 30 minutes

André Arko 

utilitylimb fortunes

One of the sillier things I do with my computer is print a horse fortune every time I open a new shell, printed by the even sillier CLI tool ponysay. A long time ago, I downloaded a fortune database from horsefortun.es (RIP), a website full of posts by the Twitter (RIP) account @horseebooks (RIP). More recently, I added a fortune file of posts from “weird twitter”, which added a lot of excellent variety. Most recently, I added one more, of posts by the excellent @utilitylimb. Most famous for “I can control any kind of gem with any kind of snake”, she is not only an all-time poster, she has returned to the internet after a decade long hiatus and can be found at @utilitylimb.bsky.social. Go…

Anyway, please enjoy these Homebrew…

Stanko Krtalic Rusendic 

Clean air & AI

One of my favorite activities is hiking. I'm fortunate to live close to a mountain where I can go for a hike any time I want - often early in the morning, before work. A winding road on the way to Medvednica I love the trek over hills and valleys, through forests and streams, the creaking of trees in the wind, the rustling of leaves, the murmur of streams, and the discussions with friends along the way.

I love the destination - the view, the tranquility, the bean stew with sausage at a hiking lodge, cuddling up to a fireplace in the winter.

But most of all I love the mountain air. Zagreb, as seen from Sljeme, covered with clouds It smells…
Ruby Weekly 

Debugging and parsing Ruby

#​754 — June 12, 2025

Read on the Web

💡 I saw an interesting Ruby bug/problem on Reddit earlier today and have written up a useful tip at the end of this issue, in case you need to debug a similar issue. Make sure to scroll down to the end and check it out :-)
__
Your editor, Peter Cooper

Ruby Weekly

Inside Ruby Debuggers: TracePoint, Instruction Sequence, and CRuby API — Debugging is a fundamental development process, and Ruby’s TracePoint and Instruction Sequence (iseq) APIs make runtime-event and bytecode instrumentation trivial. If you need more power, the CRuby C-API unlocks more, if you’re ready to shoulder…

Dmitry Pogrebnoy (RubyMine)

Memetria K/V:…

naildrivin5.com - David Bryant Copeland's Website 

Neovim and LSP Servers Working with Docker-based Development

Working on an update to my Docker-based Dev Environment Book, I realized it would be important to show how to get an LSP server worker inside Docker. And I have! And it’s not that easy, but wasn’t that hard, either. It hits a lot of my limits of Neovim knowledge, but hopefully fellow Vim users will find this helpful.

The Problem

Microsoft created the Language Server Protocol (LSP), and so it’s baked into VSCode pretty well. If you require a more sophisticated and powerful editing experience, however, you are using Vim and it turns out, Neovim (a Vim fork) can interact with an LSP via the lsp-config plugin.

Getting this all to work requires solving several problems:

  1. Why do this…
Rails Designer 

Introducing Turbo Transition: create smoother Turbo Streams

Ever wondered how to add more joy to components and partials injected or removed from the DOM? Something like this:

Previously I used a solution that relied on event callbacks from turbo. It did its job, but I was never really happy with the solution nor with its usage.

So I am introducing: Turbo Transition: A “minion” for Turbo-Frames and Streams that transitions elements as they enter or leave the DOM. ✨ A way simpler, but equally powerful solution than what I had before.

Since I’ve been working actively on Rails Designers I have been exploring all kinds of interesting techniques. Turbo Transition, just like turbo-frame and turbo-stream is nothing more than a custom element that adds…

Check it out for…

Rémi Mercier 

Build a minimal decorator with Ruby in 30 minutes

A few weeks ago, I needed to add some view-related methods to an object. Decorators are my go-to pattern to handle this kind of logic.

Normally, I’d use the draper gem to build decorators. But the app I’m working on used an older and incompatible version of Rails.

So I built a minimal decorator from scratch, added a bunch of extra behaviors, only to end up abstracting all of these away. Follow along!

What I’m working with

My Teacher class has a handful of methods:

  • A one-to-many relationship with the Student class.
  • Two public methods: one that exposes the maximum number of students a teacher can teach to, and one exposing the available teaching places.
  class Teacher < Applicatio…
André Arko 

VirtualBuddy

Apple released developer beta versions of all their OSes this week, and in the past I’ve sometimes upgraded my laptop to the developer betas while reserving my desktop/server to run the final releases. The problem with that plan is if there’s a bad bug in the beta, your laptop doesn’t work anymore. 🥲

I ran across a very cool solution for this problem in a post on bluesky (sorry I can’t find it anymore, whoever posted the link!). VirtualBuddy is a GUI app that wraps the macOS built-in Virtualization.framework to make it super easy to run macOS VMs on top of macOS. If you have a developer account, it’s literally only three clicks to get a macOS beta VM up and running, which is extremely cool.

zverok's space 

Notes on code, text, and war. Week 1: Believing in text

Writing texts is the most useful and fruitful metaphor for software development.

After 25+ years of writing software and at least as much of writing texts, this is the one thing that I have become sure about.

This also means that reading, writing, editing, and layouting concrete chunks of code is a central activity of software development. Not planning, not scheming, not calculating and measuring. All of those take their place—like in writing complex texts, they do—but the most direct and useful experience we can have is still that of getting our hands on the code.

Does this point of view stand in the age of LLMs? I believe that not only it does, but becomes stronger and more…

Hanami 

Hear from our founding patrons

Last week we launched our sponsorship drive, and today we’re back with some updates!

New community patrons!

Since our launch, we’ve had a slew of community patrons support us through our GitHub Sponsors!

Thank you to @karloscarweber, @bjeanes, @josephinehall, @tombruijn, @theomelo, @caius and @andrew! ❤️

A special extra thank you to @gdonald, a sponsor since the beginning of this year, and @BridgeCare, supporting us since July 2023!

Thank you also to @kigster and @Z2Flow for making one-time donations.

I think all of this is enough to warrant an update to our fundraising bar:

🟩 🟩 🟩 🟩 ⬜ ⬜ ⬜ ⬜ ⬜ ⬜
$27.5k of $70k — 39% to our goal!

In this group, we see…

Avo Blog 

GitHub Flavored Markdown in Rails with Commonmarker

Learn how to render GitHub-flavored Markdown in Rails with Commonmarker, explore syntax highlighting, add shortcodes, and customize output with AST or Nokogiri.
Weelkly Article – Ruby Stack News 

Understanding config/database.yml in Ruby on Rails

Understanding config/database.yml in Ruby on Rails June 11, 2025 The config/database.yml file is a core part of any Ruby on Rails application. It defines how Rails connects to the database in various environments (development, test, production), and it's often the first touchpoint when configuring an application's data layer. Let's explore how this configuration file works, … Continue reading Understanding config/database.yml in Ruby on Rails

justin․searls․co - Digest 

📄 These 4 Code Snippets won WWDC

WWDC 2025 delivered on the one thing I was hoping to see from WWDC 2024: free, unlimited invocation of Apple's on-device language models by developers. It may have arrived later than I would have liked, but all it took was the first few code examples from the Platforms State of the Union presentation to convince me that the wait was worth it.

Assuming you're too busy to be bothered to watch the keynote, much less the SOTU undercard presentation, here are the four bits of Swift that have me excited to break ground on a new LLM-powered iOS app:

  1. @Generable and @Guide annotations
  2. #Playground macro
  3. LanguageModelSession's async streamResponse function
  4. Tool interface

The @Generable and…

justin․searls․co - Digest 

📍 Tabelogged: 12

I visited 12 on May 11, 2025. I gave it a 3.7 on Tabelog.

Planet Argon Blog 

Smart Cuts: How to Audit and Reduce Your Team’s Tool Overload

Smart Cuts: How to Audit and Reduce Your Team’s Tool Overload

Learn how to audit your team’s tools and subscriptions, avoid hidden overlap, and streamline your stack—without breaking workflows.

Continue Reading

André Arko 

fzf with the newest files

Today I ran hugo new to create a file, and then wanted to edit it. I have fzf set up to let me open files in Vim, but suddenly realized… why doesn’t the file I just created show up as the first option in fzf? Apparently the answer is that it’s really annoying to get a recursive list of files and then sort them by creation date, to the point where [a Reddit post asking my exact question] had no answers.

It took a while to dig around in various different tools’ docs and repos, but I eventually landed on using rg to list files. This does exactly what I wanted, and I’m really happy with it:

FZF_DEFAULT_COMMAND='rg --files --sortr created' fzf --tmux --print0 | xargs -0 -o $EDITOR

Here’s a…

Julia Evans 

Using `make` to compile C programs (for non-C-programmers)

I have never been a C programmer but every so often I need to compile a C/C++ program from source. This has been kind of a struggle for me: for a long time, my approach was basically “install the dependencies, run make, if it doesn’t work, either try to find a binary someone has compiled or give up”.

“Hope someone else has compiled it” worked pretty well when I was running Linux but since I’ve been using a Mac for the last couple of years I’ve been running into more situations where I have to actually compile programs myself.

So let’s talk about what you might have to do to compile a C program! I’ll use a couple of examples of specific C programs I’ve compiled and talk about a few things…

JRuby.org News 

JRuby 9.4.13.0 Released

The JRuby community is pleased to announce the release of JRuby 9.4.13.0.

JRuby 9.4.13.x targets Ruby 3.1 compatibility.

Thank you to our contributors this release, you help keep JRuby moving forward!

Stability

  • Fixed a slow memory leak in subclass management. (#8842, #8844)
  • Fixed a potential deadlock during multi-threaded boot and concurrent JIT compilation. (#8845, #8849)

Usability

  • Backported JRuby .sh launcher features from JRuby 10, including AppCDS flags for improved startup time. (#8565, #8625, #8626, #8652, #8653, #8656, #8754)

56 Issues and PRs resolved for 9.4.13.0

BigBinary Blog 

Active Job Continuations

Active Job Continuations was recently merged to Rails. We recommend you to gothrough the description in thepull request since they are sowell written.

If you prefer watching a video to learn about Active Job Continuations, then wemade a video for you.

<iframewidth="560"height="315"src="https://www.youtube.com/embed/r4uuQh1Zog0"title="YouTube video player"frameborder="0"allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture"allowfullscreen

</iframe>

In short this feature allows you to configure your jobs in such a manner thatthe job can be interrupted and next time when the job starts it'll start from aparticular point so that work done so far is not…

Hi, we're Arkency 

I do not blindly trust setting things in new_framework_defaults initializers anymore

I do not blindly trust setting things in new_framework_defaults initializers anymore

TL;DR: When upgrading Rails, don’t blindly assume settings in new_framework_defaults_*.rb are applied in time to affect the framework’s internals. Test them yourself, or/and move uncommented settings to application.rb after config.load_defaults.

Upgrading a Rails application to a new version involves reviewing the new_framework_defaults_*.rb initializer and uncommenting them one by one. It feels like a safe and incremental way to adopt changes.

But in practice, that assumption can be misleading — and even dangerous.

In this post, I want to share a subtle configuration pitfall I ran into while upgrading…

justin․searls․co - Digest 

📍 Tabelogged: 鳥雅

I visited 鳥雅 on June 10, 2025. I gave it a 4.1 on Tabelog.

RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

Inside Ruby Debuggers: TracePoint, Instruction Sequence, and CRuby API

Hello, Ruby developers!

Debugging is a key part of software development, but most developers use debuggers without knowing how they actually work. The RubyMine team has spent years developing debugging tools for Ruby, and we want to share some of the insights we’ve gained along the way.

In this post, we’ll explore the main technologies behind Ruby debuggers — TracePoint, Instruction Sequence, and Ruby’s C-level debugging APIs. 

We’ll begin with TracePoint and see how it lets debuggers pause code at key events. Then we’ll build a minimal debugger to see it in action. Next, we’ll look at Instruction Sequences to understand what Ruby’s bytecode looks like and how it works with…

Josh Software 

From Tasks to Technology: What’s Under the Hood?

Have you ever wondered how ChatGPT, Gemini, Claude, or Copilot can write formal emails, explain code, or summarize complex paragraphs so effortlessly? Whether you’re a techie or not, it’s hard to ignore how everyone today relies on these AI tools. At the heart of most of these systems lies a powerful architecture called Transformers. But what … Continue reading From Tasks to Technology: What’s Under the Hood?
justin․searls․co - Digest 

📍 Tabelogged: 三河屋

I visited 三河屋 on May 10, 2025. I gave it a 3.8 on Tabelog.

Short Ruby Newsletter 

Short Ruby Newsletter - edition 139

The one where Hanami starts a funding campaign, where Ruby committers discuss renaming Namespace and where Zeitwerk reached 500 million downloads
Evil Martians 

A Tea Break: building sfruby.com with Bolt.new

Author: Irina Nazarova, CEOTopics: Developer Products, AI, Rails, Developer Community, Case Study

How we used Bolt.new and AI to launch sfruby.com in days, building a cool and high-converting site for SF Ruby Conf with Astro, OKLCH, and some Martian flair.

Recently I had the chance to build a simple website, and it brought back the same butterflies I felt in the summer of 2002, right before starting high school. There was a certain lightness to writing HTML by hand in Notepad back then—a lightness I miss in today’s complex world, where even a small script can lead you down the rabbit hole of setting IAM roles in Google Console. This time, though, the experience was entirely different. Don’t…

Write Software, Well 

Extracting Options from Arguments in Rails

💡
Update: A more modern way to accomplish this is to use keyword arguments like **options. I use it myself and totally forgot about it while writing this post late night 🤦‍♂️ Extracting options is an older pattern before this new Ruby feature was introduced.
Extracting Options from Arguments in Rails

While reading the Rails source code, I often come across useful pieces of code that I can use in my own applications.

Recently, I came across one such method, extract_options!. Actually, I had seen it before quite a few times, since Rails uses it extensively. But this time, I decided to read how it was implemented and what it exactly does, and I was surprised by how simple and elegant it is. So I figured I’d write a quick post to share it…

It is…

Remote Ruby 

The MMM Episode-Mario Kart, Meta Tags, and One Month Rails

In this fun episode of Remote Ruby, Chris and Andrew dive into a wide-ranging chat that kicks off with Nintendo’s new Switch 2, dentist nightmares, and the chaos of Mario Party. From there, it transitions into some highly practical Rails development discussions, including a slick new implementation for MetaTags in Jumpstart, the headaches and benefits of JSON-LD for SEO, and an overdue breaking change to the Pay gem. There’s also a smart e-ink countdown widget built with Ruby called TRMNL and updates on RailsConf and Rocky Mountain Ruby. Hit download now to hear more!

Links

justin․searls․co - Digest 

📍 Tabelogged: 薩摩だれやめ処 まえわり屋

I visited 薩摩だれやめ処 まえわり屋 on June 9, 2025. I gave it a 3.5 on Tabelog.

Island94.org 

Recently, June 8, 2025

Big business news for my startup: “Frontdoor Benefits Receives $2.1 Million Investment to Improve Access to SNAP and Public Assistance Programs”. My cofounder Charlotte also added some details on our blog too. Big milestone, and onto the next milestone and so forth.


We went to a Golden State Valkyries basketball game last week. It was a lot of fun, and a nice seat was the cost of a substantially-less-nice seat to see the Golden State Warriors. We bought sweatshirts, so that means we’re going back.

On sports, since my last Recently we also went to two Giants games and a Warriors game (whomp whomp).


Of random technical trivia, I discovered a cause of flaky tests:…

Hotwire Weekly 

Week 23 - Custom Path Configuration Properties, new action_text-trix gem, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another issue of Hotwire Weekly! Happy reading! 🚀✨


📚 Articles, Tutorials, and Videos

Handling missing frames in Turbo - Alessandro Rodi shows how to avoid Turbo's default Content missing error. You can intercept the turbo:frame-missing event in JavaScript to render fallback content, or handle it server-side in Rails by checking turbo_frame_request? and returning a matching frame partial.

Hotwire Native Live Episode 2: Bridge Components - Joe Masilotti dives into bridge components in episode #2 of Hotwire Native Live. He explains how bridge components let you trigger native UI (like buttons, modals, and more) via Stimulus and the JavaScript bridge.

R…

justin․searls․co - Digest 

📸 This fucking fish

Felt extremely stupid not knowing how to pronounce this fish.

Asked waitress. She didn't know

Neighboring elderly couple next to me didn't know.

Sushi chef across counter didn't know.

Took three staff members to identify it as "isaki"

Was an incredibly validating moment

danielabaron.me RSS Feed 

The Machines Finally Made Us Care About Documentation

AI coding assistants like GitHub Copilot are making engineers care about documentation again — not for their teammates, but to train the machines.
Write Software, Well 

Redirects in Rails: Manual, Helper, and Internals

💡
This is the seventh post in the series on Rails controllers.
Redirects in Rails: Manual, Helper, and Internals

Redirects are an important part of the web, and Rails gives us a clean and expressive way to use them with the redirect_to helper method.

But what's actually going on when you call redirect_to?

It's easy to treat it as a magical Rails incantation that just sends users elsewhere, but it's important to understand how it really works. Knowing what happens at the HTTP level, and how Rails constructs that response, helps you reason about edge cases, debug redirect loops, or customize behavior in advanced scenarios.

Let’s walk through how redirects work, how to implement one manually in Rails, how the redirect_to helper simplifies things,…

justin․searls․co - Digest 

📸 We are Rainbow

These gummy candies are the first rainbow-themed things I've seen so far this Pride Month.

(I bought them. They were good 🌈)

justin․searls․co - Digest 

📍 Tabelogged: イエロースパイス

I visited イエロースパイス on June 7, 2025. I gave it a 3.4 on Tabelog.

justin․searls․co - Digest 

🔗 Buy my brother's house

If you've been following me for the last few years, you've heard all about my move to Orlando* and how great I think it is. If, for whatever reason, this has engendered a desire in you to join me in paradise, now's your chance. An actually great house has hit the market in an area where high-quality inventory is exceptionally limited.

Beautiful house. Gated community. Golf course. Lake access. Disney World.

How else do I know this house is good? Because my brother lives there! He's poured his heart and soul into modernizing and updating it since he moved to Orlando in 2022, and it really shows. I suspect it won't sit on the market very long, so if you're interested you should go do the…

justin․searls․co - Digest 

📍 Tabelogged: とんかつ とんき

I visited とんかつ とんき on May 7, 2025. I gave it a 3.5 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: 新橋立呑処 へそ 静岡1号店

I visited 新橋立呑処 へそ 静岡1号店 on May 7, 2025. I gave it a 3.3 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: らーめん矢吹 本店

I visited らーめん矢吹 本店 on May 7, 2025. I gave it a 3.5 on Tabelog.

Ruby on Rails: Compress the complexity of modern web apps 

Improving Rails 8 week after week

Hi, it’s Claudio Baccigalupo. Let’s explore this week’s changes in the Rails codebase.

Move PostgreSQL Guide into the API guides
A new documentation PR is up for community review: information from the PostgreSQL guide has been migrated into the API docs, and the Active Record guide has been updated to be more database agnostic.

Follow up on Active Job Continuations
Continuations were added last week to Active Job and are improved this week by these PRs.

Better progress account for Action Text uploads
The progress bar displayed when upload a file with Action Text is now improved to account for server processing.

Always fully clear current attributes
Regular instance variables in Current

justin․searls․co - Digest 

🎙️ Breaking Change podcast v38 - Searls HQ2

Direct link to podcast audio file

Spoiler alert: I'm in the same country as I was for v37, but this time from a different nondescript business hotel. Also: I have good personal news! And, as usual, bad news news. I don't get to pick the headlines though, I just read them.

This episode comes with a homework assignment. First, watch Apple's keynote at 10 AM pacific on June 9th. Second, e-mail podcast@searls.co with all your takes. I'd love your help by informing me where my head should be at when I show up on the Changelog next week.

And now, fewer links than usual:

justin․searls․co - Digest 

📍 Tabelogged: 静岡 四川飯店

I visited 静岡 四川飯店 on May 6, 2025. I gave it a 3.2 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: ななや 静岡店

I visited ななや 静岡店 on May 6, 2025. I gave it a 4.0 on Tabelog.

Awesome Ruby Newsletter 

💎 Issue 472 - BASIC interpreter in Ruby

Write Software, Well 

Understanding the Render Method in Rails

💡
This is the sixth post in the series on Rails controllers.
Understanding the Render Method in Rails

When building Rails apps, we often take render for granted. It’s easy to let Rails implicitly render the default template or to drop in render :new to render a different template.

However, as you get deeper into Rails, you learn that there’s a lot more under the hood: whether you want to render JSON APIs, partials, custom inline ERB, or raw files, the render method is one of the most flexible and powerful tools in the Rails controller toolbox.

Let’s explore the various ways to use render in controller actions, starting from the basics, and then venturing into the lesser-known territory. Knowing all the ways render works helps you…

RubySec 

CVE-2025-49007 (rack): ReDoS Vulnerability in Rack::Multipart handle_mime_head

### Summary There is a denial of service vulnerability in the Content-Disposition parsing component of Rack. This is very similar to the previous security issue CVE-2022-44571. ### Details Carefully crafted input can cause Content-Disposition header parsing in Rack to take an unexpected amount of time, possibly resulting in a denial of service attack vector. This header is used typically used in multipart parsing. Any applications that parse multipart posts using Rack (virtually all Rails applications) are impacted. ### Credits Thanks to [scyoon](https://hackerone.com/scyoon) for reporting this to the Rails security team
Ruby Weekly 

Benchmarking common Ruby and Rack servers

#​753 — June 5, 2025

Read on the Web

Ruby Weekly

Implementing Embedded TypedData Objects — A look under the hood at TypedData, an implementation detail of Ruby commonly used internally and by native gems to store a native pointer to arbitrary data (Peter has written more about TypedData here). The news here is about a new embedded TypedData approach where the data is stored alongside the object rather than elsewhere, leading to speedups across numerous areas of Ruby.

Peter Zhu

Our Production Ruby and Rails Stack — The creators of a SaaS product give a nice, clear outline of all the moving parts that…

Weelkly Article – Ruby Stack News 

🧼 Skinny Controllers, Fat Models – A Classic Ruby on Rails Guideline

June 5, 2025 In the world of Ruby on Rails, few principles have stood the test of time like the mantra: “Skinny Controllers, Fat Models.” While it may sound quirky, this simple phrase encapsulates a deep architectural philosophy that encourages maintainability, clarity, and clean code — the Rails way. ✅ What It Really Means The … Continue reading 🧼 Skinny Controllers, Fat Models – A Classic Ruby on Rails Guideline

Rails Designer 

Refactoring an if/else hell in JavaScript

This article is extracted from the book JavaScript for Rails Developers and adapted for the web. Get your copy today. ✌️


Writing code is not a linear process—you can’t always see what needs to be written when staring at a blank canvas. In this article, I want to document the steps I took to write a method from from a larger codebase. You’ll see how it evolved from a highly procedural structure with difficult to follow if/else branches into a more object-oriented design that is actually followable and more straightforward to maintain.

For context: the feature of this code allows lines of a code editor (that is built in the book) to be moved up and down using the arrow keys. References…

Posts on Kevin Murphy 

Frequently Played June 2025

Frequently Played 🔗

I tend to listen to the same songs or albums on repeat that are evocative of how I’m feeling or what’s going on with me. Here is what I’m currently listening to over, and over, and over, and over, again.

Countin’ On A Miracle 🔗

Unfortunately, miracles are nothing more than dreams gone bad.

Full Lyrics

It’s a fairy tale so tragic
There’s no prince to break the spell
I don’t believe in magic
But for you, I will, yeah, for you, I will
If I’m a fool, I’ll be a fool
Darling, for you

Could Have Been Me 🔗

The Struts are maybe the greatest expression of pure joy and excitement I’veseen live. If Rock N Roll still mattered culturally, they’d be a household name.

Full Lyrics

I wanna live better…

justin․searls․co - Digest 

📍 Tabelogged: 石松餃子 アスティ静岡店

I visited 石松餃子 アスティ静岡店 on May 5, 2025. I gave it a 3.7 on Tabelog.

Island94.org 

A nice email for subscribers

I got this nice email from Defector, an online publication I pay for (along with De Programmatica Ipsum, Garbage Day, and Today in Tabs. I think that’s it, though I guess I can include Rubyland.news and Short Ruby Newsletter too). I yearn to share something like this for everyone who actively, if not always monetarily, supports my own work. The feeling is there, though not words this nice.

Subject: Thank you for supporting Defector

I like when people ask me how Defector is doing. Thanks to subscribers like you, I get to say that not only that Defector is doing well, but that I love my work.

I spent most of my life as a writer in jobs that were always and…

justin․searls․co - Digest 

📍 Tabelogged: がブリチキン。 草薙駅前店

I visited がブリチキン。 草薙駅前店 on May 5, 2025. I gave it a 4.0 on Tabelog.

Ruby Central 

Company Spotlight: How Persona Scales High-Stakes Identity Systems With Rails

Company Spotlight: How Persona Scales High-Stakes Identity Systems With Rails

For Ruby developers who have ever been told that Rails won’t scale, Persona is a perfect counterexample. Their identity verification product helps global companies verify users across 200+ countries, processing passports, government IDs, and digital credentials with millisecond precision. And Rails is at the center of it all.

“We chose Ruby on Rails because its emphasis on convention over configuration helps us avoid common pitfalls and keeps our focus on identity problems,” says Charles Yeh, CTO at Persona. “One of our biggest technical challenges is domain modeling—defining and evolving complex real-world concepts in software—and Ruby on Rails’ emphasis on clear, maintainable models made…

Evil Martians 

How AI startups use changelogs to win developer trust

Authors: Gleb Stroganov, Product Designer, Victoria Melnikova, Head of New Business, and Travis Turner, Tech EditorTopics: Developer Products, Design for Devtools, Design Engineering

The AI era demands speed—and smarter changelogs! Whether you're building agents or full-stack AI, use changelogs to get people interested and invested in your progress, build in public, and tell your story.

The age of AI has intensified development speed and magnified the importance of more engaging and strategic changelogs. Whether you're building an agent-driven product, a full-stack AI company, or launching as a design founder, don’t neglect the changelog’s power to signal progress, build in public, and tell…

justin․searls․co - Digest 

📍 Tabelogged: 磯魚・イセエビ料理 ふる里

I visited 磯魚・イセエビ料理 ふる里 on June 4, 2025. I gave it a 3.6 on Tabelog.

RoRvsWild's blog 

Read The Nice Manual

A few months ago, we made an RDoc theme. Its goal was to improve the layout, the navigation, and the reading comfort. We were using it to generate the Ruby documentation.

We decided to take it one step further by generating the documentation for a select group of Ruby gems. So here we are with RubyRubyRubyRuby.dev.

Even if RDoc itself improved nicely in the previous months, we believe you will enjoy reading documentation with a common layout for various gems. So far, we noticed a good effect on us. We are getting used to clicking on random classes and reading their methods to learn new things. We hope you’ll find that too.

For now, adding a new gem to RubyRubyRubyRuby.dev is a manual…

OmbuLabs Blog 

Implementing Semantic Search with Sequel and pgvector

In my previous post, An LLM-based AI Assistant for the FastRuby.io Newsletter, I introduced an AI-powered assistant we built with Sinatra to help our marketing team write summaries of blog posts for our newsletter.

In this post, I’ll go over how we implemented semantic search using pgvector and Sequel to fetch examples of previous summaries based on article content.

Semantic search allows our AI assistant to find the most relevant past examples, given meaning and context, when generating new summaries. This helps ensure consistency in tone and style while providing context-aware results that will serve as better examples for the large language modal (LLM) to generate new summaries,…

Rails at Scale 

Implementing Embedded TypedData Objects

Internally, CRuby’s objects are strongly typed, with various types such as Array, Hash, Regexp, and Object. There is also a type called TypedData which is a data type used internally and by native gems to store a native pointer to an arbitrary piece of data. Some types in Ruby that are TypedData objects include Time, Mutex, and Enumerator. Native extensions like Nokogiri, pg, mysql2, and liquid-c also use TypedData objects extensively.

Jean Boussier and I implemented TypedData objects on Variable Width Allocation in Ruby 3.3, which improves performance and memory usage. In this blog post, we will explore what TypedData objects are, how the memory layout changes with embedded TypedData…

Peter Zhu 

Implementing Embedded TypedData Objects

We implemented a new feature to TypedData objects in Ruby, called embedded TypedData objects. TypedData objects are used across a wide variety of Ruby types, such as Time, Enumerator, and Method. This feature improves allocation speed and runtime performance, while decreasing memory usage. In this blog post, we'll look at what TypedData objects are under the hood, how embedded TypedData objects work, and the performance impacts of embedded TypedData objects.
Schneems - Programming Practices, Performance, and Pedantry 

Don't McBlock me

“That cannot be done.” Is rarely true, but it’s a phrase I’ve heard more and more from technical people without offering any rationale or further explanation. This tendency to use absolute language when making blocking statements reminded me of a useful “McDonald’s rule” that I was introduced to many years ago when deciding where to eat with friends. It goes something like this:

If I say to a friend, “I’m hungry, let’s go to McDonald’s” (or wherever), they’re not allowed to block me without making a counter-suggestion. They can’t just say “No,” they have to say something like “How about Arby’s” instead. This simple rule changes the dynamic of the suggester/blocker to one of the…

SINAPTIA 

The untold challenges of OpenAI’s batch processing API

When we first integrated AI capabilities into one of our client’s applications, we did it using simple synchronous OpenAI API calls. It worked perfectly for features like text summarization and classification and the implementation was straightforward, responses almost immediate, so simple to debug and test and everything worked as expected.

However, when we began expanding into more data-intensive use cases like large-scale content classification, we realized that our initial solution would spend the budget allocated to AI too fast. What started as a seamless integration, while technically sound, ended up being a financial challenge. So, we needed to come up with a strategy to reduce…

Hanami 

Become a Hanami, Dry and Rom patron

Dear #rubyfriends — today we announce the beginning of a new era for Hanami, Dry and Rom. We are establishing paid, ongoing maintenance for the very first time.

I’m very proud of what we’ve built over our last decade of nights and weekends: an entire ecosystem of impressive breadth: from standalone libraries in Dry, to a powerful persistence toolkit in Rom, all the way to Hanami, the batteries-included framework experience that ties it all together.

Now it’s time to take our work to the next level, to prepare our ecosystem for the next decade and beyond. We need your help to make it happen. We need you and your businesses to become patrons of Hanami, Dry and Rom.

We’re aiming to raise…

justin․searls․co - Digest 

📍 Tabelogged: くずし割烹 ぼんた 個室お二階

I visited くずし割烹 ぼんた 個室お二階 on June 3, 2025. I gave it a 3.5 on Tabelog.

Ruby on Rails: Compress the complexity of modern web apps 

Judge.me joins the Rails Foundation as a new Core member

The Rails Foundation is pleased to announce that Judge.me is joining the Rails Foundation as our newest Core member, joining Cookpad, Doximity, Fleetio, GitHub, Intercom, Procore, Shopify, 1Passwordand 37signals.

Judge.me is a product reviews platform built with Ruby on Rails at its core. Founded in 2015, the company has grown to support more than 500,000 e-commerce shops across 140+ countries. Every month, Judge.me processes over 70 million orders and generates more than 2 million verified buyer reviews.

Rails has been the foundation of Judge.me’s product since the very beginning. As the platform scaled globally, Rails has remained central to delivering the performance, reliability,…

BigBinary Blog 

Understanding Queueing Theory

This is Part 5 of the series of blogs onscaling Rails.


Queueing Systems

In web applications, not every task needs to be processed immediately. When youupload a large video file, send a bulk email campaign, or generate a complexreport, these time-consuming operations are often handled in the background.This is where queueing systems like Sidekiq orSolid Queue come into play.

Queueing theory helps us understand how these systems behave under differentconditions - from quiet periods to peak load times.

Let's understand the fundamentals of queueing theory.

Basic Terminology in Queueing Theory

  1. Unit of Work: This is the individual item needing service - a job.

  2. Server: This is one "unit of parallel…

RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

Junie and RubyMine: Your Winning Combo

Junie, a powerful AI coding agent from JetBrains, is available in RubyMine! Install the plugin and try it out now!

Why Junie is a game-changer

Unlike other AI coding agents, Junie leverages the robust power of JetBrains IDEs and reliable large language models (LLMs) to deliver exceptional results with high precision.

According to SWE-bench Verified, a curated benchmark of 500 real-world developer tasks, Junie successfully solves 60.8% of tasks on a single run. This impressive success rate demonstrates Junie’s ability to tackle coding challenges that would normally require hours to complete. This is more than AI – it’s the latest evolution in developer productivity.

Yo…

RubyMine : Intelligent Ruby and Rails IDE | The JetBrains Blog 

What’s Next for RubyMine

Hello everyone!

The RubyMine 2025.2 Early Access Program is already available! In this blog post, we’ll share the upcoming features and updates planned for this release cycle.

What’s coming in RubyMine 2025.2?

Debugger improvements

We’re introducing a number of changes aimed at enhancing the debugger installation experience. The entire process will now take less time, and the associated notifications will be less distracting and more informative. Finally, the RubyMine debugger will be updated to support newly released Ruby versions sooner than it previously did. 

Better multi-module support

A priority of the upcoming RubyMine release is the provision of support for…

justin․searls․co - Digest 

📍 Tabelogged: 魚河岸直営 いけす海鮮 ろ組 くるふ福井駅店

I visited 魚河岸直営 いけす海鮮 ろ組 くるふ福井駅店 on June 3, 2025. I gave it a 3.5 on Tabelog.

OmbuLabs Blog 

An LLM-based AI Assistant for the FastRuby.io Newsletter

Every other week, the FastRuby.io newsletter brings a curated list of the best Ruby and Rails articles, tutorials, and news to your inbox.

Our engineering team collects links to interesting articles and our marketing team curates them, writes a summary for each article, and creates the newsletter. This process is quite manual, and involves some back and forth to ensure summaries are accurate, engaging, and relevant to our audience.

To make if more efficient, we have developed an AI assistant that helps us curate articles and generate the summaries for the newsletter.

Why an AI Assistant?

We wanted a tool that could reduce the repetitive parts of the workflow without taking away the…

justin․searls․co - Digest 

🔗 Buy Eric's Fine Disney Art

As some of you know, I moved to Orlando in 2020. But it wasn't so much Orlando as Disney World itself, given our home's relative proximity to the parks and the degree to which we're isolated from most of the "Florida stuff" that comes to mind when I tell people I live in Florida.

One of the great joys of where we live is that I've made a variety of fascinating friends who similarly relocated to central Florida with a degree of intentionality, and one of them is Eric Doggett. Eric is a phenomenally talented photographer, artist, and all-around creative. In fact, if you listen to Breaking Change, a big reason it sounds as good as it does is thanks to Eric!

A couple years ago, Eric was…

justin․searls․co - Digest 

📸 Try this Milk Sour!

An accident of language—the fact that "sour milk" sounds so unappealing—is probably why nobody in America ever considered making a "milk sour", which is just... exactly what it sounds like.

Milk and liquor, together at last.

Short Ruby Newsletter 

Short Ruby Newsletter - edition 138

The one where Active Job Continuations by Donal McBreen landed in Rails, RailsConf 2025 gets DHH for a fireside chat, and Nate Berkopec highlighted Ruby's AI assistance catching up.
Felipe Vogel 

Hitting the books

tl;dr I’ve been spending time on foundational skills, like practicing SQL and building an HTTP server from scratch, and next I’ll go back to learning computer science.

A break from building stuff

“Just build stuff.”

That’s what I’ve done over the past two or three years. I spent most of my outside-of-work-programming time (much reduced now that I have children) on “practical” projects such as:

(That last one is debatable in its practicality 😅)

What to work on next? I’m not sure. I’m stumped

Weelkly Article – Ruby Stack News 

🚨 Alert: ZJIT Merge — What Ruby | Rails Developers Should Know 🚨

June 2, 2025 The Ruby community has reached a significant milestone with the integration of ZJIT into Ruby core. This next-generation Just-In-Time compiler promises to reshape how we think about Ruby performance in production environments. What Makes ZJIT Different? ZJIT represents a fundamental shift in Ruby's approach to runtime optimization. Unlike previous JIT implementations, ZJIT … Continue reading 🚨 Alert: ZJIT Merge — What Ruby | Rails Developers Should Know 🚨

Dom Christie 

Custom Path Configuration Properties in Hotwire Native iOS

Path Configuration rules in Hotwire Native provides a way for customising how a view is displayed for a particular URL pattern. Out-the-box it supports customising:

  • the view’s context (e.g. modal screen)
  • the view’s presentation i.e. how it impacts the navigation stack
  • functional tweaks, such as “Done” and “Back” button display

The documentation also states: You are free to add more [rule] properties as your app needs, yet it doesn’t mention how you can access them, or how you might use them. So after a bit of digging, and some pointers from Joe Masilotti, here’s what I’ve discovered…

You can access the properties that match a given URL with the following:

Hotwire.config.pathConfiguration.

And then to…

Avo Blog 

Cloudflare Turnstile for spam prevention in Rails

Let's learn how to implement Cloudflare Turnstile as a method to prevent spam submissions or unwanted access to parts of our application
justin․searls․co - Digest 

📍 Tabelogged: 焼肉ニューミート

I visited 焼肉ニューミート on June 2, 2025. I gave it a 3.6 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: マルカドール

I visited マルカドール on June 2, 2025. I gave it a 3.7 on Tabelog.

Drifting Ruby Screencasts 

Marksmith

Easily add Markdown support to your Rails applications with Marksmith. This isn't a drop-in replacement to ActionText, but can be used with text or blob columns. Marksmith integrates easily with ActiveStorage for handling file uploads. In this episode, we'll explore setting up Marksmith and some best practices.
justin․searls․co - Digest 

📍 Tabelogged: 福炒家

I visited 福炒家 on June 1, 2025. I gave it a 3.2 on Tabelog.

Hotwire Weekly 

Week 22 - Streaming Turbo Streams Over HTTP, Custom Android Keyboard Extension, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

Welcome to another issue of Hotwire Weekly! Happy reading! 🚀✨


📚 Articles, Tutorials, and Videos

EuRuKo shares 2025 speaker lineup - EuRuKo shared their speaker-line and it also features two Hotwire-adjecent talks:

Hotwire Native Live - Episode #1 - Joe Masilotti walks through building a basic cross-platform Hotwire Native app from scratch using Rails as the backend and starting fresh projects in Xcode and Android Studio. The stream covers setting up iOS and Android apps that load…

Alchemists: Articles 

Railway Pattern

Cover
Railway Pattern

This pattern is coined from the Railway Oriented Programming presentation — and subsequent book: Domain Modeling Made Functional — by Scott Wlaschin which explains how to pipe functions together in a fault tolerant manner. The good news is Ruby is great at blending objects with functions for maximum effect. In order to learn how to apply this pattern within your own code, we’ll leverage the following foundational gems that make this pattern shine:

  • Dry Monads: Provides low level monad functionality. There are several types of monads included in this gem but we’ll focus on the Result monad.

  • Pipeable: Implements this pattern by building upon Ruby’s native function…

justin․searls․co - Digest 

📍 Tabelogged: ラ トゥール

I visited ラ トゥール on May 31, 2025. I gave it a 3.8 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: 宇都宮 きそば

I visited 宇都宮 きそば on May 31, 2025. I gave it a 3.2 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: とちおとめ×芭莉式

I visited とちおとめ×芭莉式 on May 31, 2025. I gave it a 3.4 on Tabelog.

justin․searls․co - Digest 

📍 Tabelogged: オリオン餃子 宇都宮駅前通り店

I visited オリオン餃子 宇都宮駅前通り店 on May 31, 2025. I gave it a 3.5 on Tabelog.

Remote Ruby 

Bites and Bytes – Cheesesteaks and One Month Rails

In this episode of Remote Ruby, Chris and Andrew catch up on recent travels and food experiences, including the best Philly cheesesteaks they’ve ever had. The conversation shifts towards development topics, particularly testing challenges and solutions in Ruby on Rails, featuring discussions about emoji pickers, asset pipelines, and the prawn library. Chris shares updates on acquiring an old Rails app, One Month, and future plans for this project. They also explore various development hiccups and solutions, including using libraries for faster system tests and streamlining asset pipelines. The episode wraps up with insights into new tools like an official Postgres extension for VS Code and…

Ruby on Rails: Compress the complexity of modern web apps 

Active Job Continuations and more

Hi, Wojtek here. Let’s see this week’s news about Rails.

Final RailsConf
The last RailsConf (July 8 - 10, Philadelphia) will include a fireside chat with DHH, and talks or panel discussions with Rails team members Eileen Uchitelle (Core), Gannon McGibbon (Committers), Hartley McGuire (Issues), and Matheus Richard (Triage), as well as many more new and familiar faces. Tickets are still available.

Introduce Active Job Continuations
Allow jobs to the interrupted and resumed with Continuations.

A job can use Continuations by including the ActiveJob::Continuable concern. Continuations split jobs into steps. When the queuing system is shutting down jobs can be interrupted and their progress…

class ProcessImp…
justin․searls․co - Digest 

📄 Why agents are bad pair programmers

LLM agents make bad pairs because they code faster than humans think.

I'll admit, I've had a lot of fun using GitHub Copilot's agent mode in VS Code this month. It's invigorating to watch it effortlessly write a working method on the first try. It's a relief when the agent unblocks me by reaching for a framework API I didn't even know existed. It's motivating to pair with someone even more tirelessly committed to my goal than I am.

In fact, pairing with top LLMs evokes many memories of pairing with top human programmers.

The worst memories.

Memories of my pair grabbing the keyboard and—in total and unhelpful silence—hammering out code faster than I could ever hope to read it. Memories of…

OmbuLabs Blog 

Parallax Proves a High-Value Concept and Gains a Predictive Machine Learning Model by Collaborating with OmbuLabs

Parallax was beginning to explore the use of artificial intelligence (AI) or machine learning (ML) to leverage the wealth of data on hand about customer projects, with the goal of improving their resource planning. The company thought it might be possible to create a machine learning model that identifies customer projects at risk, equipping the Customer Success team to make data-driven recommendations on how to head off problems before they occur.

Background

Founded in 2019, Parallax helps digital service organizations optimize operations using sophisticated tools that improve capacity planning and resource planning and management. The Minnesota-based company equips small and…

RailsNotes, the Ruby on Rails guides you wished you had. 

Internal product analytics with Ahoy

Learn how to use the Ahoy gem to track feature usage within your Ruby on Rails apps.
Awesome Ruby Newsletter 

💎 Issue 471 - Unlocking Ractors: class instance variables

John Nunemaker 

Giant Robots

A few weeks back I joined Chad on his Giant Robots podcast to talk Ruby, Rails and a bit of business – including our acquisition of Fireside last year. The episode just went live and I hope you enjoy it.

Fun fact: their podcast is actually hosted on Fireside – inception! You can listen wherever you consume podcasts or on Fireside (below) or youtube.

Ruby Weekly 

On Enumerable's loveliness (and performance)

#​752 — May 29, 2025

Read on the Web

Ruby Weekly

▶  The RubyKaigi 2025 YouTube Playlist — Ruby's 'home' conference, RubyKaigi, is an important entry in the Ruby event calendar. 2025's event took place last month featuring a keynote from Matz and talks from Tenderlove, Koichi Sasada, and many others. There are 57 talks (in English and Japanese) so you’re sure to find something interesting, but I'll link a few highlights below.

RubyKaigi 2025

A FEW RUBYKAIGI TALKS:

  • Matz's keynote is in Japanese, though you can turn on subtitles. It's a high level talk covering thoughts on AI and static typing, and Matz teases…

Ruby on Rails: Compress the complexity of modern web apps 

See you at the last RailsConf

As we approach the last ever RailsConf July 8 to 10 in Philadelphia, the Rails Foundation is looking forward to joining the Ruby Central and the Rails community to celebrate 20 years of history.

For the final RailsConf, we decided to make the theme The Past, Present, and Future of Rails. We have so many years of rich history to look back on since the very first RailsConf in 2006.

Rails has evolved so much over the years – from the days before Bundler existed, to merging Merb into Rails, to the introductions of ActiveStorage, ActiveJob, etc and now the Hotwire-era. We will celebrate everything that we’ve learned over the years and everyone who has been a part of the community that…

The speaker lineup has been announced, and it’s shaping up to be one for the books, including a fire…

Rails Designer 

10 Modern CSS Features You Want to Use

Just like JavaScript, CSS hasn’t the best reputation amongst (Rails) developers. And just like with JavaScript (think Turbo, but also CoffeeScript), CSS has a long history of pre-processors, post-processors and abstractions of it (think Tailwind CSS).

And for a long time many of these layered features where much needed. It is hard to imagine CSS without nesting selectors, is it?

But it is 2025 and CSS has (and is!) improving at a rapid speed. Gone are the days of spacer.gif or creating images for each corner of a card component to mimic border radii.

If you have been neglecting CSS for awhile (because you used Tailwind CSS, for example), below I want to highlight some of the newer CSS…