Rubyland

news, opinion, tutorials, about ruby, aggregated
Sources About
Remote Ruby 

Gems, Jokes, and JavaScript

Andrew and Chris dive into issues with SMTP configuration on new Digital Ocean droplets, their experiences with various email delivery gems like Postmark and Mailtrap and go over some best practices for handling account creation and user associations in Rails applications. The conversation also touches on deployment automation, developing new features like the inbox on Podia, and the importance of having visual tools and browser extensions for effective debugging. They share some lighter moments discussing fun side projects, including Andrew's insult generator app and their humorous take on turning everyday developer annoyances into creative gem ideas. The episode wraps up with some Stripe…

Julik Tarkhanov 

Streamlining Web App Development With Zeroconf

The sites which are using Shardine do not only have separate data storage - they all have their own domain names. I frequently need to validate that every site is able to work correctly with the changes I am making. At Cheddar we are also using multiple domains, which is a good security practice due to CORS and CSP. Until recently I didn’t really have a good setup for developing with multiple domains, but that has changed - and the setup I ended up with works really, really well. So, let’s dive in - it could work just as well for you too!

The problem of multiple hostnames

When you have an application (let’s assume it is a Rails application, for simplicity) and you run bin/rails s or bin/d…

Stanko Krtalic Rusendic 

Building Twice: A clone of Once

When Campfire - the first Once product - came out, a few of us at Ruby Zagreb pitched in to buy a copy.

Prometheus had brought fire from Mount Olympus, and we came to see the blaze. We were finally seeing how the people at 37signals - the birthplace of Rails - build Rails apps. And as a bonus, we could finally ditch our free Slack Channel!

After days of exploring the source code, the time came to set up Campfire. The purchase email included a shell command that looks like this
/bin/bash -c "$(curl -fsSL https://auth.once.com/install/1111-1111-1111-1111)
I ran that, and after solving a few issues, I had a Docker container running Campfire.

This is a super elegant way to distribute apps! But…
Awesome Ruby Newsletter 

💎 Issue 469 - Ruby 3.5 Feature: Namespace on read

avdi.codes 

Developer Tooling is a Lousy Business

Back in 2017 Slava Akhmechet wrote a post-mortem on the RethinkDB project:

If you do set out to build a developer tools company, tread carefully. The market is filled with good alternatives. User expectations are high and prices are low. Think deeply about the value you’re offering to the customer. Remember – wanting the world to be a certain way doesn’t make it so.

As a veteran of a developer tools startup, my view of that market is similarly jaundiced.

Every hacker has a great idea idea for a developer tools startup at some point. But it’s a tough market to succeed in.

  • It’s just not as big a market as you think it is. Yes, there is gobs of money in the software…
SINAPTIA 

Ruby Argentina May meetup

On May 14, 2025, another Ruby Argentina meetup took place in Buenos Aires. The event was sponsored by several companies, including SINAPTIA, LeWagon, Rootstrap, and OmbuLabs.

The meetup featured two interesting talks. The first was by Santiago Diaz, who spoke about “Multi-tenancy in Rails: from 0 to SaaS with acts_as_tenant”. Santiago shared his experience implementing multi-tenancy in a project using the acts_as_tenant gem, providing valuable tips and tricks. He also compared it to other approaches, such as the apartment gem.

The first talk

After a short break, Fernando E. Silva Jacquier presented on “Service Objects in Rails”. He discussed his perspective on why he favors using Service Objects…

Evil Martians 

Demo app design for Medplum, open source healthcare developer platform

Authors: Vadim Pleshkov, Product Designer, and Travis Turner, Tech EditorTopics: Developer Products, Design, Case Study, Martian Design Sprint

What began as a request to add templating capabilities to a demo app evolved into something much more valuable: a reimagining of Medplum's product strategy.

Medplum, an open-source developer platform designed to streamline the development of healthcare applications, initially came to us with a request to upgrade their demo application, an important sales tool for their platform. But the Martians team went further, recognizing a longer-term product strategy that could expand their customer base and open new revenue opportunities.

Super Good Blog 

Solidus hits 3 million downloads

Ten years ago, when we were considering forking Spree to create Solidus, we had no idea what the future would hold. We weren’t even sure if forking was the right decision. Today, I’m sure we made the right call. I’m proud to announce that as of this week Solidus has been downloaded more than 3 million times on RubyGems.org!

Humble Beginnings

Leading up to the fork, the Spree community had been struggling with the direction of the project. The biggest issue was with the technical direction of the project. Upgrading from version to version was extremely difficult due to the number of breaking changes in each release. This caused stores to forgo upgrades, disincentivizing them from…

Ruby Weekly 

Say hello to ZJIT

#​750 — May 15, 2025

Read on the Web

Ruby Weekly

A Proposal for Defining Virtual Top Level Namespaces — The idea is that defined namespaces can load libraries and dependencies and keep them separate from other namespaces. Numerous benefits are promised like avoiding issues with globally shared objects, name conflicts, or version conflicts. There’s an interesting blend of support and criticism in the responses.

Satoshi Tagomori et al.

Rails Upgrades: The Good Parts — Trust the agency behind the Standard Ruby tools used by 20,000+ projects. Complex upgrades for GitHub, Gusto, and Zendesk. We set you up…

Alchemists: Articles 

Git Rebase Edit

Cover
Git Rebase Edit

Editing a commit allows you to make changes to an existing commit which includes editing the subject, body, and associated files. Even better, editing a commit allows you to break up a large commit into smaller commits which allows you to reverse a Git Rebase Fixup and/or Git Rebase Squash if necessary.

That said — and as a rule of thumb — you are better off creating smaller commits that you fixup and/or squash into other commits rather than split a large commit into smaller commits via Git Rebase Edit. The reason is that splitting apart a larger commit can be more time consuming than fixing and/or squashing. Not to mention an increased chance of merge conflicts.…

RoRvsWild's blog 

Experimenting to optimize SQL query by x360 and some tips to read query plans

Introducing the schema

RorVsWild stores server metrics each minute (load average, CPU, memory and storage). The table has few millions of entries and weight a bit less than 2GB. That is neither huge nor small, but it is big enough to cause slow queries if something is wrong with indexes. And as we are monitoring RorVsWild with RorVsWild, we cannot ignore something wrong here.

The slow query returns data to display a chart of the load average from several servers. The chart displays 3 lines: the minimum, the maximum, and the average. That is useful for detecting if one server is out of breath or slacking.

Server charts with load average, CPU, RAM and disk

This data comes from the table server_metrics_per_minutes with the following…

\d…
Ruby News 

Ruby 3.4.4 Released

Ruby 3.4.4 has been released.

This release includes a fix for a YJIT bug related to local variables and addresses a build issue on Windows when using GCC 15. It was released ahead of schedule to make these fixes available as soon as possible. A few other bug fixes are also included.

Please see the release notes on GitHub for further details.

Release Schedule

We intend to release the latest stable Ruby version (currently Ruby 3.4) every two months following the most recent release. Following this release (3.4.4), Ruby 3.4.5 is scheduled for July, 3.4.6 for September, 3.4.7 for November, and 3.4.8 for January.

If a change arises that significantly affects users, a release may occur…

Planet Argon Blog 

Resourcing and Coordination Basics: A CEO’s Guide to Onboarding a Development Agency

Resourcing and Coordination Basics: A CEO’s Guide to Onboarding a Development Agency

Onboarding a dev agency? Avoid slow starts and missteps with this CEO-friendly guide to better coordination, resourcing, and communication.

Continue Reading

Write Software, Well 

Serving Large Files in Rails with a Reverse Proxy Server

Serving Large Files in Rails with a Reverse Proxy Server

Video: Serving Large Files with a Reverse Proxy Server

TL;DR: If you don't want to read the >3000 word post, here's the gist:

X-Sendfile (or a variation of it, such as X-Accel-Redirect) is an HTTP response header used by web servers (like Nginx, Apache, or Thruster) to efficiently serve files to clients without the Rails application server having to load file in-memory and serve it.

How does it work?

Suppose you need to serve a large, sensitive, access-controlled file (i.e., a 650 MB set of architectural drawings) that requires authentication and a permissions check. Let's also assume the app server is sitting behind a reverse proxy like Nginx, (or Thruster, if you're using Kamal).

Note: This is…
Weelkly Article – Ruby Stack News 

🎸 Building a Multi-Tenant Rails App for Music Stores Using Apartment

May 14, 2025 A few months ago, I had to build a SaaS platform for music instrument stores. Each store needed to manage its own products, customers, and sales, but everything had to run under one codebase. I ended up going with the apartment gem to handle multi-tenancy — specifically, schema-based separation using PostgreSQL. It … Continue reading 🎸 Building a Multi-Tenant Rails App for Music Stores Using Apartment

Ruby Central 

RailsConf 2025 Keynote: John Dewsnap on What Happened After Flexcar Switched from Java to Ruby on Rails

RailsConf 2025 Keynote: John Dewsnap on What Happened After Flexcar Switched from Java to Ruby on Rails

Last year, Flexcar migrated its entire platform from a complex Java-based microservice architecture to a Ruby on Rails monolith. That shift happened almost in real time at RailsConf 2024, after Irina Nazarova announced it during her keynote.

One year later, Flexcar’s Director of Engineering, John Dewsnap, is joining us at RailsConf 2025 to share the full story of what happened before and after that launch.

RailsConf 2025 Keynote: “365 Days Later

John’s keynote will explore how and why Flexcar left behind its 80 microservices in favor of a single Rails application.

At the time, switching to Rails was a radical decision. With the exception of CTO Freedom Dumlao, the team had no prior Ruby or…

Radan Skorić's website 

Coding agent in 94 lines of Ruby

“It’s not that hard to build a fully functioning, code-editing agent.” Thorsten Ball An article floated into my reading list: How to Build an Agent, or: The Emperor Has No Clothes. The author, Thorsten Ball, claims building a coding agent isn’t hard, then builds one in ~400 lines of Go. While reading the code, I kept thinking that a lot of it is boilerplate. My keen suspicion received conf...
Rails at Scale 

ZJIT has been merged into Ruby

Following Maxime’s presentation at RubyKaigi 2025, the Ruby developers meeting, and Matz-san’s approval, ZJIT has been merged into Ruby. Hurray! In this post, we will give a high-level overview of the project, which is very early in development.

ZJIT is a new just-in-time (JIT) Ruby compiler built into the reference Ruby implementation, YARV, by the same compiler group that brought you YJIT. We (Maxime Chevalier-Boisvert, Takashi Kokubun, Alan Wu, Max Bernstein, and Aiden Fox Ivey) have been working on ZJIT since the beginning of this year.

It’s different from YJIT in several ways:

  • Instead of compiling YARV bytecode directly to the low-level IR (LIR), it uses an high-level SSA-based…
Rails Designer 

Salut Courrier! A New Ruby Gem to Send Emails

Salut Courrier! 👋 📮

Courrier is a new Ruby gem to send emails in your apps. You write a class containing the subject, HTML, and/or plain text content. It then uses the API from your choice of transactional email provider like Mailgun, Postmark, and Resend.

Go straight to GitHub and give it that star! ⭐

courrier /ku.ʁje/ noun, masculine

  1. mail, post (postal items)le courrier du matin - morning mail ▪ relever le courrier - to collect the mail
  2. letter, correspondencerépondre à un courrier - to reply to a letter ▪ courrier électronique - email
  3. messenger, courier (person)courrier diplomatique - diplomatic courier ▪ courrier à vélo - bike courier

Courrier is a…

Josh Software 

Flutter’s Isolates: Do Heavy Lifting Without Freezing Your App (or Your Brain)

“Flutter is fast… until you try parsing a 50MB JSON on the main thread.” — Ancient Flutter Proverb Ever tapped a button in your Flutter app and the whole thing just… froze? Yeah. That’s what happens when you hand your main UI thread a job meant for a forklift. Enter: Isolates — Flutter’s way of doing heavy work without nuking your user … Continue reading Flutter’s Isolates: Do Heavy Lifting Without Freezing Your App (or Your Brain)
RubyGems Blog 

3.6.9 Released

RubyGems 3.6.9 includes enhancements, performance and documentation.

To update to the latest RubyGems you can run:

gem update --system

To install RubyGems by hand see the Download RubyGems page.

## Enhancements:

  • Add mtime to Gem::Package::TarWriter#add_file argument. Pull request #8673 by unasuke
  • Print webauthn authentication link as a separate line to make it easier to visit. Pull request #8663 by mperham
  • Remove shellwords autoload. Pull request #8644 by deivid-rodriguez
  • Installs bundler 2.6.9 as a default gem.

## Performance:

  • Avoid unnecessary splat allocation. Pull request #8640 by jeremyevans

## Documentation:

  • Fix typo in Changelog for 3.6.0 / 2024-12-16. Pull…
Tom Dalling 

The Difference Between Management And Leadership

The tl;dr is that management is a set of powers and accountabilities that the role confers upon you, whereas leadership is the ability to motivate followers. Anyone can be a leader, and teams run on leadership not management. Management is not necessarily bad, but management without leadership is pretty dang terrible! Also management is like the nervous system of an octopus.

Ruby on Rails 

Rails World 2025 General Admission tickets live today

For those following the Rails blog via RSS, a last reminder that General Admission tickets (€499) will be available today, Tuesday May 13th at 5pm CEST.

Head to the Rails World website at 5pm to secure your tickets.

This year we also set aside a limited number of Corporate Support tickets (€899), so if you prefer not to join the queue, those tickets are already available and serve to further support Rails World. Book Corporate Support tickets here.

Good luck and see you in September!

Amanda & Gaia

The Bike Shed 

463: All about modals with Elaina Natario

Joël strikes up a dialogue with fellow thoughtboter Elaina Natario about the various use cases of modals.

Together they discuss their pros and cons, the dos and don’ts, their functionality and accessibility to the end user as well as the subtle differences you'll notice when compared to dialogs.

The Sponsor for this episode has been Judoscale - Autoscale the Right Way. Check out the link for your free gift!

Your guest for this week has been Elaina Natario and you host has been Joël Quenneville.

If you would like to support the show, head over to our GitHub page, or check out our website.

Got a question or comment about the show? Why not write to our hosts: hosts@bikeshed.fm

Felipe Vogel 

Reimplementing polymorphic associations in the database

Polymorphic associations are one of those Rails features that can compress a lot of complexity into just a few lines of code. But as is often the case with Rails, the convenience comes at a cost.

Don’t get me wrong, I’m not out on a personal vendetta against polymorphic associations. The only time I’ve felt the pain of them is once at work, when I renamed a model that was polymorphically associated and I forgot to do a corresponding data migration to update the class name stored in…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 135

The one where EuRuKo has announced that their tickets are on sale, Rails World tickets will go on sale on the 13th of May, and Joel Drapper invites us to use the strict_ivars gem.
Giant Robots Smashing Into Other Giant Robots 

NWRUG's (Manchester, UK) May 2025 Meeting — Rails AntiPatterns Revisited

NWRUG is back in Manchester, UK again this week for another session at Colony One.

Nearly 15 years ago, Rails 3 was born from the merger of Rails 2.x and Merb. Around the same time the book Rails AntiPatterns: Best Practice Ruby on Rails Refactoring was released.

Join Chad Pytel, author of Rails AntiPatterns and thoughtbot founder and CEO, as he revisits key AntiPatterns from the book, explores how their solutions hold up today, and reflects on what’s changed (or hasn’t!) in the Rails world since then.

To attend, all you have to do is register here, and turn up this Thursday!

Fatsoma are once again sponsoring the event, so expect plenty tasty pizza for everyone.

If you enjoyed this…

Saeloun Blog 

Rails 8 adds built in authentication generator

For developers to setup the basic authentication flow in Rails application, we have to do lot of manual configurations.

New developers and small projects teams don’t even need major authentication related feature. But they still need to rely on third party gems or write the whole codebase of the authentication flow from scratch, which is time consuming.

Rails has built in generators(eg: model, migration) for different features to avoid manaul coding and configurations. These generators allow developers to focus on building the core features of their application, rather than spending time on basic setup tasks.

Authentication generator

Rails 8 introduced the basic authentication generator…

Tosbourn – Belfast based Ruby developers 

Override database attribute types

In an ideal world, your database setup will reflect your business logic, as in if a field is required in your application, it is required in your database, if it is a number in your database, it is a number on your system. I’ve written about this in checking in with your database.

We don’t live in an ideal world, far from it. Sometimes your database will say one thing but your application needs it to act like something else. The “correct” fix would be to update the database to suit. That isn’t always possible or desirable. Luckily, Rails can help!

I was working on a codebase recently where the database used TEXT for a lot of fields. Ideally these would be VARCHAR(30) or similar. In this…

Rails Designer 

Natural Language Parser for Recurring Events using Stimulus

In this article I explored how I add recurring events in Rails. Let’s now look at how to add a natural language parser input field. Instead of having users select from dropdown menus with Daily, Weekly, etc., I want users to type things like every week or monthly on the 15th.

Something like this:

(not pretty, but it works! 😄)

This feature is built on top of the work from the previous article. View the complete implementation in this commit.

First, let’s look at the view changes. Replace the previous basic select input, in app/views/events/_form.html.erb, with a text field:

- <div>
-   <%= form.label :recurring_type, "Repeats" %>
-   <%= form.select :recurring_type, [
-     ["Daily",…
Avo Blog 

Cloudflare R2 with Active Storage

Let's learn how to integrate Cloudflare R2 uploads with Active Storage if S3 or other alternatives are not of your liking
Giant Robots Smashing Into Other Giant Robots 

Top 5 Ruby on Rails Consultancies in 2025

Ruby on Rails has experienced a rebirth in recent years, offering a perfect balance of development speed, scalability, and maintainability suitable for both enterprises and startups. For enterprise, Rails provides a battle-tested foundation that can handle complex business logic and significant user loads while remaining maintainable over time. For startups, Rails enables rapid prototyping and iteration, allowing teams to validate ideas quickly and scale as they grow—all without needing to rebuild their tech stack from scratch.

Why Rails Over Node.js, Python, or PHP?

While each technology stack has its merits, Ruby on Rails offers distinct advantages that keep it in the…

  • De…
Hotwire Weekly 

Week 19 - From Next.js to Rails, Building a Password Manager, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Multistep forms with Rails and the Wicked gem - Exequiel Rozas published a guide on the Avo Blog on implementing multistep onboarding forms in Rails applications using the Wicked gem. This approach allows developers to create sequential forms without relying on custom JavaScript.

Part 1: How We Fell Out of Love with Next.js and Back in Love with Ruby on Rails & Inertia.js - Adam Fortuna shares Hardcover's journey from using Next.js to returning to Ruby on Rails with Inertia.js. Initially attracted to Next.js for its server-side rendering capabilities and SEO benefits,…

code.dblock.org | tech blog 

Executing Structured A.I. Workflows with Shopify Roast

Last week, my team at Shopify released a new tool called Roast, a convention-oriented framework for creating structured AI workflows. Our vision is to enable A.I. agents to solve developer productivity problems at scale. Imagine continuously improving unit tests, or optimizing test performance across hundreds of thousands of tests with minimal human intervention!

As we embarked on this journey, we quickly learned that, like many junior Engineers, A.I. needs some help focusing, and may not be ready to roam free around millions of lines of code and not hallucinate random results. So we made Roast, which gave A.I. some structure.

In the following example I will grade a Ruby unit test.

If…

The Rails Tech Debt Blog 

DIY Ruby on Rails Upgrades: Essential Open Source Tools

At FastRuby.io, we deeply value the Ruby and Rails communities and believe in giving back through open source contributions. We wouldn’t be where we are today if it wasn’t thanks to a lot of open source projects we use on a daily basis.

We actively use, maintain, and enhance several tools designed to empower developers and teams who want to handle Ruby and Rails upgrades themselves, especially those who might not have the budget to hire our services.

These open source projects facilitate upgrades by improving transparency, managing technical debt, and ensuring smooth transitions between Ruby and Rails versions.

Here’s an overview of each tool and how it can support your next upgrade…

Ruby on Rails 

New Guides PR, Rails World Updates and more!

Hi, it’s Vipul!. 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 Rails Application Template Guide and also merges it with Rails Generators Guide. If you are well versed in these areas, please review and submit your feedback on the PR!

Rails World updates!
Check out the latest updates on schedule, new ticket types and availability and a new Rails at Scale event!

Defer ActiveJob enqueue callbacks until after commit when enqueue_after_transaction_commit enabled
Active Job’s around_enqueue callbacks are deferred until after the database transaction commits, but only when the enqueue_after_transacti…

avdi.codes 

I made a keychain

Jessitron has taken up making friendship bracelets lately. She has a lot of meetings and it’s something to do with her hands.

She makes bracelets. Except sometimes they turn out too short. They turn out to be… keychains, instead.

Some bracelets that turned out to be keychains.

A couple weeks ago I saw Joel Drapper announce his strict_ivars gem, and I got really excited. I loved the concept. But I immediately thought of my own spin on it. Mostly, I wanted it to generate warnings instead of exceptions. I also wanted to solve the “repetitive initializer” problem at the same time.

It got my wheels spinning in a way they haven’t in a long time. Here was a Ruby…

Weelkly Article – Ruby Stack News 

🔒 Free SSL Certificates for Your Ruby on Rails App Using Let’s Encrypt

May 9, 2025 Security is no longer optional — every modern web app must support HTTPS. Thankfully, Let's Encrypt provides free SSL certificates, and with a bit of Ruby magic, you can integrate them directly into your Rails application. Recently, I worked on automating this setup and even contributed a pull request to simplify the … Continue reading 🔒 Free SSL Certificates for Your Ruby on Rails App Using Let’s Encrypt

avdi.codes 

Agents Aren’t Juniors, They Are Amnesiac Spies

The other day I told Augment:

Use the Table Data Gateway pattern for this class

It did as it was told, perfectly, the first time. This is not something I could tell a junior without a great deal more hand-holding. It instantly understood me, because uncounted millions of lines of code and writing-about-code are baked into its probability matrix.

On the other hand, no matter how many times I refactor the agent’s work, or tell it how to refactor its own work, it will never learn from that experience. It will never get better than it is. It will never grow in taste and instincts.

Today’s coding agents aren’t like “working with a junior”. They are like working with Jason Bourne,…

Remote Ruby 

Why is the Test Suite Hanging?!

In this episode of Remote Ruby, Chris and Andrew discuss various technical challenges and developments. Chris provides insights into recent updates and debugging issues with Stripe integration, including transitioning from usage records to billing meters. Andrew shares a complicated debugging session involving a mysterious test suite freezing problem on a friend’s computer. They dive into the intricacies of using tools like LLDB and GDB for troubleshooting and explore potential solutions. Chris also leaves us with a cliffhanger that includes an exciting new project!

Links



Honeybadger
Honeybadger is an application health monitoring tool built…
RubySec 

CVE-2025-32441 (rack): Rack session gets restored after deletion

### Summary When using the `Rack::Session::Pool` middleware, simultaneous rack requests can restore a deleted rack session, which allows the unauthenticated user to occupy that session. ### Details [Rack session middleware](https://github.com/rack/rack/blob/v2.2.13/lib/rack/session/abstract/id.rb#L263-L270) prepares the session at the beginning of request, then saves is back to the store with possible changes applied by host rack application. This way the session becomes to be a subject of race conditions in general sense over concurrent rack requests. ### Impact When using the `Rack::Session::Pool` middleware, and provided the attacker can acquire a session cookie (already a major…
RubySec 

CVE-2025-46336 (rack-session): Rack session gets restored after deletion

## Summary When using the `Rack::Session::Pool` middleware, simultaneous rack requests can restore a deleted rack session, which allows the unauthenticated user to occupy that session. ## Details [Rack session middleware](https://github.com/rack/rack-session/blob/v2.1.0/lib/rack/session/abstract/id.rb#L271-L278) prepares the session at the beginning of request, then saves is back to the store with possible changes applied by host rack application. This way the session becomes to be a subject of race conditions in general sense over concurrent rack requests. ## Impact When using the `Rack::Session::Pool` middleware, and provided the attacker can acquire a session cookie (already a major…
RubySec 

CVE-2025-46727 (rack): Rack has an Unbounded-Parameter DoS in Rack::QueryParser

## Summary `Rack::QueryParser` parses query strings and `application/x-www-form-urlencoded` bodies into Ruby data structures without imposing any limit on the number of parameters, allowing attackers to send requests with extremely large numbers of parameters. ## Details The vulnerability arises because `Rack::QueryParser` iterates over each `&`-separated key-value pair and adds it to a Hash without enforcing an upper bound on the total number of parameters. This allows an attacker to send a single request containing hundreds of thousands (or more) of parameters, which consumes excessive memory and CPU during parsing. ## Impact An attacker can trigger denial of service by sending…
Ruby Rogues 

Demystifying the Rails Codebase with Ridhwana Khan - RUBY 675

Hey folks, in this week’s episode, I sat down with the incredible Ridhwana Khan — a South African technical writer for the Rails Foundation and lead engineer at Circle. We had a fantastic chat about all things Ruby on Rails, but especially the underappreciated art (and science!) of writing documentation.


Ridhwana took us behind the scenes of the official Rails Guides — how they’re updated, expanded, and reviewed — and gave us a real sense of the thoughtful, collaborative work that powers one of the best-documented frameworks out there. She also shared her personal journey: from freelancing into Rails doc writing, to her passion for building inclusive communities like Rails Girls South Africa…
avdi.codes 

https://avdi.codes/39927-2/?utm_source=rss&utm_medium=rss&utm_campaign=39927-2

Please do try out Ivar, I’m sure there are corner cases and I’d love to identify them

Awesome Ruby Newsletter 

💎 Issue 468 - We Fell Out of Love with Next.js and in Love with Ruby on Rails and Inertia.js

Planet Argon Blog 

Managing Tech Debt with a Custom VS Code Extension

Managing Tech Debt with a Custom VS Code Extension

Tired of losing focus to log tech debt? See how we built a VS Code extension that captures context and sends it straight to Jira—without leaving your editor.

Continue Reading

Ruby Weekly 

Coming back to Rails from Next.js

#​749 — May 8, 2025

Read on the Web

Ruby Weekly

'How We Fell Out of Love with Next.js and Back in Love with Rails' — The book reading/tracking service Hardcover has been working on a big migration from the Next.js world to using Rails coupled with Inertia.js to maintain a React-powered SPA vibe. This post goes into a lot of detail about how they made it work and will be useful for anyone looking to blend the two different worlds.

Adam Fortuna

🗣️ This post kicked off an extensive discussion on Hacker News.

How Contributions to RubySpec Look Over Time — RubySpec (started in 2006 as part of Rubinius) is the

Rails Designer 

Recurring Calendar Events in Rails

Last week I released v1.14 of Rails Designer’s UI Components. With that release came a fully-customizable Calendar Component, built with ViewComponent and designed with Tailwind CSS.

Since that release I got two times the question via email about recurring events. Does that work? And indeed it does. The Calendar Component simply accepts an events array/collection. And while this kind of functionality is out-of-scope of a UI component (and the support for it), I am currently working on something that just happens to need this kind of feature. It is not at all too difficult to start (the tricky bits start when hundreds of thousands of events are created 😬). So what else can I do then to…

Avo Blog 

Multistep forms with Rails and the Wicked gem

Let's learn how to build a multistep onboarding flow for our Rails app with the Wicked gem
Schneems - Programming Practices, Performance, and Pedantry 

Bad Type Patterns - The Duplicate duck

Why aren’t people writing more types? Perhaps it’s because the intermediate and expert developers deleted the patterns that didn’t work and left no trace for beginners to learn from. This post details some code I recently deleted that has a pattern I call the “duplicate duck.” You can learn the process I used to develop the type, and why I deleted it. Further, I advocate for Rust developers to document and share their mistakes in the hope that we can all learn from them.

TLDR: What’s a duplicate duck?

A “duplicate duck” is a type that implements a subset of traits of a popular type with the same results. In my case I wrote a type, MultiError, that I later realized was identically …

avdi.codes 

https://avdi.codes/39835-2/?utm_source=rss&utm_medium=rss&utm_campaign=39835-2

Check it out, I published a new RubyGem!

(I think the original post syndicated to the fediverse a little wonky so I’m re-linking it)

avdi.codes 

Announcing Ivar: Ruby’s Missing Instance Variable Typo Warnings

You should probably go tread this post instead.

JRuby.org News 

JRuby 10.0.0.1 Released

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

We’ve jumped to Ruby 3.4 compatibility and Java 21 minimum to bring you the best Ruby on JVM experience possible. We are confident this is the most compatible and stable major release we’ve ever had.

Security

JRuby.org News 

JRuby 9.4.12.1 Released

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

JRuby 9.4.12.x targets Ruby 3.1 compatibility.

Security

Ruby Central 

The Ruby Central README: April 2025

The Ruby Central README: April 2025

Welcome to The Ruby Central README 🎉

Instead of combining updates on our Open Source Program, conferences, and organizational news into one, The README is a newsletter focused on Ruby Central as an organization, our events, and the broader community.

For Open Source Program news, check out our dedicated newsletter, The OSS Changelog, and subscribe here.

Welcome to Ruby Central’s New Executive Director!

Big news — Ruby Central is thrilled to welcome our new Executive Director, Shan Cureton!

Shan is joining our team at Ruby Central at a pivotal moment. Over the last few years, we launched our Open Source Program, redefined RubyConf as our flagship annual conference (beginning in 2026), expanded…

The Ruby on Rails Podcast 

Episode 536: Better With Becky with Becky Searls

Becky Searls is a teacher-turned-trainer, but her true passion is learning and continuous growth. She shares everything she learns through her business, Better with Becky, which recently launched its first product: a strength-training app called Build with Becky (which she built in collaboration with her husband Justin using Ruby on Rails)

Show Notes

Sponsors
Hosting for The Ruby on Rails Podcast is provided by Fireside.fm. If you want to start a podcast and are looking for hosting, visit fireside.fm/rails to get started.

Alright, let’s talk about deploying code without having a full-blown panic attack. You ever push…

Ruby Magic by AppSignal 

An Introduction to Solid Queue for Ruby on Rails

One of the most exciting additions to Rails 8 is undoubtedly Solid Queue, a new library for processing background jobs.

You might not think it's that big of a deal. After all, there are plenty of other queuing systems out there. If you work with Rails, you'll likely know about Sidekiq and Resque — both are exceptionally performant and reliable. There is also GoodJob and the venerable DelayedJob. With all those options available, do we really need another queuing system?

Let's find out together. In this two-part series, we'll dig deep into Solid Queue's internals, discover what makes it unique, and learn more about why it was created in the first place.

Why Solid Queue for Ruby on Rails?

Sin…

Tim Riley 

Catch you at Baltic Ruby

Baltic Ruby is coming! Just 36 days to go!

This will be my only speaking engagement for the year, and it’ll be my honour to close out the conference. I’ll be sharing something new, both more personal and broader in range than ever before.

I’ll also be at the conference’s OSS Expo representing Hanami (and Dry and Rom!). If you’d like some guidance in making your first contribution, or building your first app, this is your chance!

I love all the thought and care that’s being put into this conference. I can’t wait to get to Riga. I hope to see you there too!

Hi, we're Arkency 

Multi tenant applications with horizontal sharding and Rails Event Store

Multi tenant applications with horizontal sharding and Rails Event Store

Horizontal sharding has been introduced in Rails 6.0 (just the API, with later additions to support automatic shard selection). This enables us to easily build multi tenant applications with tenant’s data separated in different databases. In this post I will explore how to build such an app with separate event store data for each tenant.

Application idea

Let’s sketch some non-functional requirements for our sample application.

  • First: all tenant data is separated into a shard database,
  • Second: tenant’s management, shared data, cache & queues use a single shared database (admin’s application),
  • Third: embrace async,…

And one last thing … the tenant database setup will be…

Ruby on Rails 

Rails World 2025: Two big updates

Hey everyone!

The Rails World 2025 website has been updated, and here are a few big updates you should know about this year’s event.

New ticket types, prices and release schedule

This year we will have two ticket types: Support tickets and General Admission tickets.

New: We’re introducing a limited batch of Corporate Support tickets, available for €899. These pre-released tickets, while still partially subsidized by the Rails Foundation, are ideal if your company wants to send your team and can use an L&D budget. Support tickets play a key role in making Rails World possible and also help keep General Admission tickets affordable for community members paying out of pocket. As a thank…

Stanko Krtalic Rusendic 

Adding MCP to a Rails app

Last week we had an AI hackathon at work during which we added an MCP server to our Rails app. This was much easier than I expected, the result was both impressive and scary, and I learned a few things about MCP that I didn't expect. Demo of Claude using our app via MCP to solve a support request Goal

My team wanted to help our support team by automating some laborious tasks, like cross referencing data, by offloading the bulk of the work to an AI agent. This would make support’s work easier, responses quicker, and in some cases it would free up my team too - an all around win.

To allow the AI to interact with our app - like a person would - we decided to add MCP to…
The Bike Shed 

462: Decomposition as a key developer skill with Steve Polito

Joël and Steve sit down to discuss the ins and outs of decomposition within their respective workflows and how they use it to their advantage when working on certain projects.

Together they look at working with vertical slices over other decomposition methods, when and how to break down code as efficiently as possible, and Joël lays out his three key principles that help him write code dubbed “The Triangle of Separation”.

The Sponsor for this episode has been Judoscale - Autoscale the Right Way. Check out the link for your free gift!

Learn more about Joël’s triangle of separation and working with vertical slices!

Your guest this week has been Steve Polito, and your host…

Mintbit 

find_each vs find_in_batches in Active Record

When working with large datasets in Rails, loading all records into memory can be expensive and inefficient. That’s where Active Record’s batch processing methods — find_each and find_in_batches — come to the rescue. They allow you to iterate over large numbers of records without blowing up your memory usage.

What is find_each?

find_each is a convenient way to loop over records one at a time, but under the hood it processes them in batches.

1
2
3
User.find_each(batch_size: 1000) do |user|
  user.send_weekly_email
end
  • Records are fetched in batches of 1,000 by default.
  • You get one record at a time in the block.
  • Great for operations where you’re performing the same action on each…

What is find_in_batches?

find_in_batches gives you access to each batch…

Posts on Kevin Murphy 

Frequently Played May 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.

De Profundis Borealis 🔗

Ghost dropped a new psalm (album) at the end of April, so that’s been my focus.

Full Lyrics

All the words that never came out right
Within reach, but out of sight
All the songs that couldn’t mend your heart
But slit it up and tore apart

Lachryma 🔗

I already told you: new Ghost.

Full Lyrics

In the middle of thе night, it feeds
In the middle of the night, it еats you
Everybody knows
Everywhere I go
I can never run and I cannot hide

I’m done crying
Over someone like…

Short Ruby Newsletter 

Short Ruby Newsletter - edition 134

The one where you can read about why Marc Köhlbrugge chose Ruby, where Adam Fortuna shares how they returned to Rails, and where Ruby Central discusses how Honeybadger builds with Rails
Weelkly Article – Ruby Stack News 

🔗 Connecting Ruby on Rails and React: Building a Simple User List API

May 5, 2025 In my recent project, I built a basic full-stack integration using Ruby on Rails as an API backend and React for the frontend, both running in Docker containers. The goal was simple: list users fetched from a Rails API into a React component. What surprised me the most? It turned out to … Continue reading 🔗 Connecting Ruby on Rails and React: Building a Simple User List API

justin․searls․co - Digest 

📸 If this is losing, I don't want to win

In Japan, it's common for bars to have a dice game with rules like:

  • Snake eyes: free drink
  • Even number: half off drink
  • Odd number: double size, double price drink

I "lost" with both of these 1L whisky-fruit highballs. I sure don't feel like a loser, though.

Josh Software 

LLMs Made Easy: A Beginner’s Guide to AI-Powered Text

These days, we often hear the term LLM (Large Language Model). If you need help with content writing or coding, someone might say: “Yaar, mai toh content creator hoon, par ab mere paas koi content hi nahi hai!” “Yaar, ye logic samajh hi nahi aa raha, kaise likhu?” Then, your friend—or maybe Pintya sitting beside … Continue reading LLMs Made Easy: A Beginner’s Guide to AI-Powered Text
Drifting Ruby Screencasts 

Scaffold Templates

In this episode, we explore using the scaffold generator and modifying the templates to simplify the creation of consistent, Tailwind CSS-styled views and controllers in a Rails application, saving time when prototyping and building new features.
Hotwire Weekly 

Week 18 - Hotwire Native Dev Tools, Hotwire Native Tabs, and more!

Hotwire Weekly Logo

Welcome to Hotwire Weekly!

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


📚 Articles, Tutorials, and Videos

Hotwire Native Dev Tools - Leon Vogt announced and released Hotwire Native Dev Tools, a lightweight tool to debug and inspect Hotwire Native apps.

Active Storage & Form Errors: Preventing Lost File Uploads in Rails - Daniela Baron explains how to prevent file uploads from being lost when a form with validation errors is re-rendered. Her solution uses direct uploads, signed IDs, and a custom Stimulus controller to keep files attached across failed submissions.

Streaming LLM Responses with Rails: SSE vs. Turbo Streams - Justin Paulson explores two methods for streaming…

Super Good Blog 

RubyKaigi 2025

Every year, Rubyists from all over the world converge on Japan for the focal point of Ruby world, RubyKaigi. This year, we sent a contingent of the Super Good team: Adam Mueller, Chris Todorov, Amy Norman, and myself.

The conference moves to a new city in Japan every year, and 2025 found it in Matsuyama. Matsuyama is the capital of Ehime prefecture on the island of Shikoku. It’s a beautiful city known for the Dōgo Onsen, Matsuyama castle, and oranges. So many oranges. Everything there is orange-themed. You’ll find Ehime’s mascot, Mikyan on everything.

Mikyan

If you’ve ever felt intimidated at the prospect of attending a conference in Japan (perhaps because you don’t speak…

Island94.org 

Recently, May 4, 2025

Frontdoor Benefits, my new startup, posted our first newsletter/update. In doing our “planning” for it I took a lot from how I apprach this blog:

  • We are writing to a single individual (”Dear treasured friend” not “Hey friends”).
  • We are writing from each of our personal voices (”This is Charlotte. I have… ” or “This is Ben. I have…”)
  • Tone is casual and informal, we are sharing the things we’ve done or are thinking about with a close and curious person.
  • We write about what we have done or thought about. Not so much what we intend to do in the future (definitely no commitments!)
  • We try to avoid talking about the newsletter itself. For example, we…

It’s been successful so far, in that we asked for some things in it and people have delivered.


I have been doing lots of research and having interesting conversations about customer/client/caseworker/constituent relationship management. Not so much “salesforce” or “hubspot” but how to break down…

Stefan’s Blog 

Kamal - Presentation @Ruby Frankfurt

In the end of March 2025, I had the honor to present at the Ruby Frankfurt meetup. The topic was a deep dive into Kamal, the deployment tool for Rails 8. You can find the online presentation in Reveal.JS here.

In summary: during the last 6 months I migrated a rather large Rails app from our company (our Applicant-Tracking-System for Empfehlungsbund) from a Capistrano-like Ansible playbook into a full-blown containerized deployment using Kamal. Meanwhile, I also migrated all of my side-projects to deploy with Kamal + Gitlab-CI. After upgrading some apps to Kamal 2, I would recommend now, to have a look. Prior to that, there were some rough edges, but now, it’s worth to have a look, if you…

Ryan Bigg Blog 

Show, Don't Tell

On Monday night, I’m going to be on a panel in Melbourne, in front of a crowd of aspirational junior developers, answering questions and giving advice. I’ve been a proponent for junior developers for a very long time, and ran two successful iterations of my Junior Engineering Program at Culture Amp, ending in 2019, as well as continuing to mentor developers in my current line of work.

My advice to the juniors of 2025 is plain and simple: Show, Don’t Tell. The first time I hear from a lot of juniors is probably when they apply for a job, or reach out about one. It used to be meetups but the tyranny of distance got in the way.

When they reach out, that’s when I’ll find out the regular…

AkitaOnRails.com 

Último Tentativa de Treinar uma LLM com LoRa. Tiro de canhão, mas errando a mosca.

Ok, eu sou insistente. no post anterior expliquei tudo que eu sabia sobre tentar fazer fine-tuning de um modelo com LoRa. Mas é um processo tedioso, demorado, e limitado à "pobreza" da minha RTX 4090. Em 24GB de VRAM tem que caber o modelo, coisas como KV cache, dataset de treinamento e espaço pra processar tudo. Apertando, cabe o modelo Qwen3-8B e 1MB de dataset e já era. Vai usar 21GB constantemente durante mais de 1 hora e o resultado final, apesar do modelo conseguir responser "sim, eu sei Zig 0.14", não é bom - porque o modelo base de só 8B já não era grande coisa.

A saída: migrar meu treinamento pra uma máquina maior. Comecei tentando uma A40, pra ver se 40GB era suficiente pra caber…

On the Edge of Ruby 

Contributions to ruby/spec

As a maintainer of ruby/spec I sometimes wonder how much each Ruby implementation contributes to ruby/spec. Without further ado, here it is:

Interpretation

Rubinius started ruby/spec (called RubySpec back then) and was the main contributor until 2014. In 2015, Rubinius development slowed down significantly and so did their work on adding specs (more on that in this 10 years old post).

In 2014, TruffleRuby was started and quickly became the main contributor to ruby/spec, contributing more than half of all commits since then.

CRuby has contributed consistently to ruby/spec, around 20% of all commits each year. This is great to see as CRuby is in the unique position of implementing new…

AkitaOnRails.com 

Ensinando Zig mais recente pra sua LLM - Treinando LoRas (quase)

Dois posts atrás eu demonstrei o Calcanhar de Aquiles das LLMs pra programação: eles não foram treinados com os dados mais recentes disponíveis. Então se perguntar sobre mudanças na versão da sua biblioteca, linguagem ou frameworks favoritos que saiu mês passado, ele não vai saber.

Nota: todos os códigos que vou mostrar mais abaixo estão disponíveis neste repositório no meu GitHub. Fucem lá depois de ler até o fim.

Por exemplo, eu perguntei ao modelo Qwen3-8b (que saiu poucos dias atrás), qual versão de Zig ele sabe e a resposta foi: 0.11 ou 0.12:

zig antigo

Aliás, é assim como na foto que se chama uma API compatível com OpenAI de LLMs com curl. De qualquer forma, foi por isso que eu sofri tanto…

justin․searls․co - Digest 

🔗 How to use a Pants Press in a Japanese business hotel

One of the best parts of all these ridiculous side quests I accept is that I never run out of new situations to figure out. This week: how to iron my shirt and press my pants from a Japanese business hotel the day before a meeting.

Thankfully, we have YouTube

Of course, models vary between companies and I actually had to follow this less entertaining video to get figure out what to do with a standing "Twinbird" press (apparently the #1 seller in pants presses):

🔗 youtube.com

🧂 justin.searls.co

AkitaOnRails.com 

RANT - LLMs são LOOT BOXES!

Eu sei que vai soar negativo demais, e de novo, vou repetir que eu não sou anti-I.A., anti-LLM nem nada disso, pelo contrário, eu gosto TANTO, mas TANTO, que venho dedicando TODAS as minhas horas em pesquisar a fundo a respeito.

Tem sido muito útil pra mim especialmente pra resumir paper, conciliar pesquisas em vários sites, resumir tópicos e coisas do tipo.

"MAS .."

E é um enorme MAS, ele tem sido BEM inútil em programação de verdade. Não vou repetir todos os problemas que já encontrei: eu detalhei bastante nos posts anteriores. Mas minha conclusão é simples: ele pode ajudar em código, em tarefas pequenas, focadas, isoladas, com bastante prompt pra ajudar e você - programador - precisa…

Ruby Rogues 

How to Optimize Your Rails App Using SQLite - RUBY 674

In this episode of Ruby Rogues, Charles Max Wood and Ayush Nwatia welcome back guest Stephen Margheim to dive deeper into the evolving world of SQLite. Stephen explains that with Rails 8, SQLite has reached a major milestone: it now supports a fully production-ready, server-driven web application experience with no compromises. He walks us through the big improvements, like better transaction handling and SQLite’s integration with Rails, which now supports background jobs, caching, and WebSocket messaging—all powered by SQLite without additional configuration. These enhancements mean that deploying a Rails app backed entirely by SQLite is not only possible—it’s efficient, stable, and simple.…
avdi.codes 

Facts, feelings, and fascism – by Amy Isikoff Newell

fascists would rather we pay less attention to external facts (which they are lying to us about) and more attention to our feelings, because those are so easy to manipulate

It is always a good idea to read Amy Newell, but *especially* now.

Source: Facts, feelings, and fascism – by Amy Isikoff Newell

Ruby on Rails 

Parallel testing improvements and more

Hi, Wojtek here. Let’s see what’s new in the Rails.

Rails World tickets coming soon

We’ve been informed that General Admission tickets will be available May 13. More information is coming soon, but you can already mark your calendar!

Implement ability to skip creating parallel testing databases
With parallel testing, Rails will create a database per process. If this isn’t desirable or you would like to implement databases handling on your own, you can now turn off this default behavior.

To skip creating a database per process, you can change it via the parallelize method:

parallelize(workers: 10, parallelize_databases: false)

or via the application configuration:

config.active_support
danielabaron.me RSS Feed 

Active Storage & Form Errors: Preventing Lost File Uploads in Rails

Rails' Active Storage makes file uploads easy, but validation errors can cause attachments to be lost when forms re-render. This guide explains why and walks through a step-by-step solution using direct uploads, signed IDs, and Stimulus for an improved user experience.
Ruby News 

CVE-2025-43857: DoS vulnerability in net-imap

There is a possibility for DoS by in the net-imap gem. This vulnerability has been assigned the CVE identifier CVE-2025-43857. We recommend upgrading the net-imap gem.

Details

A malicious server can send can send a “literal” byte count which is automatically read by the client’s receiver thread. The response reader immediately allocates memory for the number of bytes indicated by the server response. This should not be an issue when securely connecting to trusted IMAP servers that are well-behaved. It affects insecure connections and buggy, untrusted, or compromised servers (for example, connecting to a user supplied hostname).

Please update net-imap gem to version 0.2.5, 0.3.9,…

AkitaOnRails.com 

Quando LLMs não Funcionam pra Programar? Um caso de uso mais real.

Como eu disse no meu post anterior de Rant sobre Desmistificar a I.A. pra programação, posso confirmar que muitos benchmarks sintéticos que dizem medir capacidade de programação, são MENTIRAS.

E não digo que é uma tentativa proposital de mentir, mas que quem está fazendo as pesquisas e compilando rankings e leaderboards, não divulgam exatamente os detalhes e só soltam o resultado sem contexto. Este é um exemplo que achei hoje: LiveBench, que é mais um pacote de benchmark de "programação". Olha que é testado exatamente:

LiveBench scripts

São testes idiotas do tipo "carregue estes dois arquivos CSV e compare os valores". É ainda mais idiota que Leet Code. É ainda mais idiota que a maioria dos testes de…

avdi.codes 

https://avdi.codes/39202-2/?utm_source=rss&utm_medium=rss&utm_campaign=39202-2

Has anyone done self-hosted GitPod (or other self-hosted devbox) on their own cloud compute that ISN’T AWS? I wish I could just chuck it on a Vultr box but it needs KVM.

I’m just so allergic to doing this shit on AWS. I want A BOX with A NAME that is MINE but that lives in a datacenter. And I would rather gargle rusty nails than edit IAM policies.

Awesome Ruby Newsletter 

💎 Issue 467 - Itsi - A fast new Ruby Rack server, reverse proxy, static file server and more.

avdi.codes 

Regression

Date: 10,000 BCE
Problem: crops failed
Diagnosis: crop gods angry with you
Plan: propitiate gods, hope for best

Date: 1999
Problem: emails missing
Diagnosis: DNS
Plan: fix DNS

Date: 2025
Problem: emails missing
Diagnosis: email reputation gods angry with you
Plan: propitiate gods, hope for best

Charles Oliver Nutter 

3D Charts and More with JRuby and JFreeChart

After playing with JFreeChart and JRuby and writing up a lovely blog post called “Beautiful Charts with JRuby and JFreeChart” it seems that some folks did not agree with my assessment of the charts as “beautiful” and others did not realize the power of what they’d just seen.

So, let’s see if this one grabs your attention. As before, this example is available in the headius/jruby-charts repository.

Orson Charts

Along with a comprehensive and configurable set of 2D chart formats, the JFreeChart project also ships Orson Charts, an equally extensive set of 3D chart renderers. The library has been designed to work alongside JFreeChart and has all the same support for file output and GUI…

So…

Ruby Weekly 

All the gem statistics you can eat

#​748 — May 1, 2025

Read on the Web

Ruby Weekly

Itsi: A Fast, New Ruby Rack Server — Itsi is an interesting new player joining the world of Ruby app servers. It’s written in Rust, is Rack compliant, and works as a reverse proxy, API gateway and static file server. You can choose between a typical blocking model, an (optional) fiber-based scheduling approach, or even mix the two in a hybrid model.

Wouter Coppieters

📊 Ruby Gem Analytics Powered by ClickHouse and Ruby Central — How would you like to quickly run SQL queries to do analytics over every single Ruby gem download since 2017? Now you can. There’s…

Alchemists: Articles 

Options Pattern

Cover
Options Pattern

The Options Pattern provides a solution for making your applications configurable. The name of this pattern stems from .NET but we’ll learn how to implement this in Ruby.

Quick Start

To make any object configurable, you only need Structs to define the attributes you need and a class to inject the configuration into. Example:

Configuration = Struct.new :token, :uri

class Client
  def initialize(settings = Configuration.new)
    @settings = settings

    yield settings if block_given?
  end
end

Client.new do |set…

The above will produce an instance of a Client as follows:

#<Client…
Ruby Central 

Welcoming Ruby Central’s New Executive Director, Shan Cureton

Welcoming Ruby Central’s New Executive Director, Shan Cureton

Ruby Central is excited to welcome our new Executive Director, Shan Cureton. 

Over the past few years, Ruby Central has gone through a period of meaningful growth and change. We launched our Open Source Program to lead the ongoing development of RubyGems and Bundler, redefined RubyConf as our flagship annual conference (beginning in 2026), and expanded our grant program to support local Ruby meetups around the world. We also worked to overcome the challenges of the pandemic with a renewed focus on sustainability, ensuring we’re well-positioned to support the Ruby ecosystem for the long term.

As we step into our next chapter, we sought out an Executive Director who has the vision and drive to…

Rails Designer 

Turbo Drive, Frames, Streams, Morph? What to use?!

The Hotwire trifecta allows you to write modern (Rails) web apps, without the need to write (a lot of) cumbersome JavaScript with Turbo’s Drive, Frames, Streams or Morph. But with all these options, which one to use and when?

Hotwire, like Rails, needs a mental shift from you as the developer. You can try to use Stimulus on a per-component basis, but you get way more bang for your buck if you write general-purpose controllers instead. The same goes for the various Turbo options.

You get the most value out of Hotwire if you follow progressive enhancement, a web design strategy popularized in 2008 by Aaron Gustafson that ensures basic functionality for all users while layering advanced…

AkitaOnRails.com 

Rant - LLMs vão evoluir pra sempre? Desmistificando LLMs na programação

Vamos recaptular meus últimos artigos:

  • Hello World de LLM - neste artigo explico como criar um programinha simples (educativo) de chat carregando um LLM (Qwen2.5) e até como usar prompts pra que ele consiga chamar scripts/agentes e executar algumas tarefas simples como carregar arquivos locais. Eu subi o código no GitHub como Tiny-Qwen-CLI e deixei o código "sujo" de propósito pra poder testar como as LLMs conseguem (ou não ajustar esse código).
  • Seu Próprio Co-Pilot Gratuito - aqui eu explico mais sobre a ferramenta Aider, que é como se fosse um Co-Pilot ou Cursor, mas gratuito e open-source. Ele não exige plugins nem IDEs. Roda no terminal e é fácil de usar. Também mostro como integrar…

Ao longo dos últimos dias eu vim testando e postando no X minhas impressões sobre os…

Aha! Engineering Blog 

Streaming LLM Responses with Rails: SSE vs. Turbo Streams

img { max-height: 400px; margin-right: auto; margin-left: auto; } table, th, td { font-family: Red Hat Display, "Helvetica Neue", Arial, "Noto Sans", sans-serif; border: 1px solid var(--aha-gray-400); } th { background-color: var(--aha-gray-100); color: var(--aha-gray-900); text-align: left; } td img { margin: 0.5em auto !important; }

In the world of Rails development, integrating large language models (LLMs) like OpenAI's GPT has become increasingly common. One challenge developers face is streaming these responses efficiently to provide a smooth user experience.

This post will explore some different techniques for streaming LLM…

Charles Oliver Nutter 

Creating Beautiful Charts with JRuby and JFreeChart

I recently returned from RubyKaigi where I had the opportunity to sit down with members of the Japanese Ruby community and show them a little bit of JRuby. One of the items that came up a few times was the difficulty of utilizing external libraries from Ruby: if it’s a C library, typically you have to either write a C extension or do the extra work of writing up an FFI binding.

If the library is not implemented in C or Ruby, things get even weirder.

One example is the Charty library, one of the more popular options for generating beautiful chart graphics on Ruby. But Charty actually wraps a Python library called matplotlib, and the bindings for CRuby literally load Python into the current…

Planet Argon Blog 

From PHP/Laravel to Rails: My First Conference with the Rails Community

From PHP/Laravel to Rails: My First Conference with the Rails Community

Our PHP/Laravel developer shares takeaways from Tropical on Rails 2025 and his inspiring experience with the Ruby on Rails community.

Continue Reading

Evil Martians 

GMI Cloud meets Webflow and speeds ahead in the AI compute race

Authors: Gleb Stroganov, Product Designer, and Travis Turner, Tech EditorTopics: Developer Products, Design, AI, Case Study, Martian Design Sprint

Evil Martians partnered with GMI Cloud to design and launch a high-performance, Webflow-powered website in just 3.5 weeks—blending fast execution, cutting-edge 3D visuals, and analytics-ready conversion flows to help this $82M-funded AI startup win the GPU compute race.

In a matter of weeks, Evil Martians delivered a fully functional website with conversion-driven pages tailored specifically around the goals of GMI Cloud, a California-based GPU cloud infrastructure provider. We built a scalable foundation for future updates with CMS integration and…

justin․searls․co - Digest 

🎙️ Breaking Change podcast v36 - Hedgelord

Direct link to podcast audio file

I'm going away on a trip for an unexpectedly long time, and you'll never guess why! (You might guess why.) Anyway, here's something to remember me by.

If you've ever been worried about whether something you cared about would work out okay, email podcast@searls.co and tell me about it so that I can share your story with a bunch of strangers on the Internet.

Video of this edition of the show is up on YouTube.

References available upon request:

Judoscale Dev Blog 

Autoscaling on Heroku Fir: Your Options Today in 2025

Heroku has just launched their latest platform—Fir—and it’s their biggest launch in a decade. Built on Kubernetes and featuring expanded dyno options, cloud-native buildpacks, and integrated OpenTelemetry, Fir represents a significant evolution for Heroku. However, if you’re planning your migration to Fir, you’ve probably noticed something missing: autoscaling.

If you’re thinking, “Wait, no autoscaling? How am I supposed to manage my dynos?"—you’re not alone. Heroku is certainly hard at work on their own autoscaler for Fir, but your production apps can’t wait. Let’s explore how to autoscale on Heroku Fir today.

Is autoscaling optional?

Let’s face it—you could run your Fir app…

Saeloun Blog 

Rails stops generating bundler binstub(bin/bundle)

Bin folder

In a Rails application, the bin/ folder contains executable scripts that help manage the application. These scripts are generated when we create a new Rails project and ensure that commands like rails, rake, and bundle use the correct environment and gem versions defined in the Gemfile.lock.

Example:

bin/rails – Runs Rails commands.

bin/rake – Runs Rake tasks.

bin/setup – Prepares the app for development.

Basically, Rails encourages us to use bin/rails rather than just rails because that loads the rails executable from within the bin/ subfolder of our app, ensuring we get the correct version. If we run rails all by itself, that could run any rails executable anywhere on…

Run bin/rai…

Judoscale Dev Blog 

Scaling Python Task Queues Effectively

Scaling your Python task queues can mean the difference between snappy user experiences and “why hasn’t this email arrived yet?” support tickets. When traffic spikes or your Python app starts doing intensive work in the background, tasks can pile up, queue latency climbs, and users start having problems.

Scaling a Python task queue meme

Whether you’re drowning in tasks or spending too much on overprovisioned workers, you’re in the right place.

Why scaling a task queue matters for you

If your Python app is small, a single worker process handling your task queue might be enough. But as your web app grows, the volume of tasks often increases with it. Whether you’re using task queues to send emails or…

Mintbit 

Improving Rails Migrations Using bulk: true

When working with Rails migrations, performance isn’t usually the first thing that comes to mind—until your schema starts getting big or you’re deploying changes to production environments with large databases. Fortunately, Rails provides a simple way to optimize schema changes: the bulk: true option.

What is bulk: true in Rails Migrations?

Introduced in Rails 5.2, the bulk: true flag can be passed to methods like change_table or create_table to group multiple schema changes into a single SQL statement, when supported by your database.

This approach reduces the number of separate ALTER TABLE calls, which not only improves performance but can also prevent potential locking or downtime…

RubySec 

CVE-2025-43857 (net-imap): net-imap rubygem vulnerable to possible DoS by memory exhaustion

### Summary There is a possibility for denial of service by memory exhaustion when `net-imap` reads server responses. At any time while the client is connected, a malicious server can send can send a "literal" byte count, which is automatically read by the client's receiver thread. The response reader immediately allocates memory for the number of bytes indicated by the server response. This should not be an issue when securely connecting to trusted IMAP servers that are well-behaved. It can affect insecure connections and buggy, untrusted, or compromised servers (for example, connecting to a user supplied hostname). ### Details The IMAP protocol allows "literal" strings to be sent in…
Gusto Engineering - Medium 

Gusto Eng Spotlight Series: Wil Alvarez Rodriguez

Today, we’re spotlighting Will Alvarez Rodriguez, who has been with Gusto for a bit over eight months as an individual contributor on the Gusto Embedded API infrastructure team.

Wil at a Star Wars Cantina themed bar

Rose: How did you join Gusto?

Wil: I have been at Gusto for a little over eight months now, but my journey as a software engineer spans 15 years. In my previous role, I found that the company’s culture and environment weren’t the right fit for me. Recognizing the importance of being in a place that truly resonated with my values, I decided to take a step back, reassess, and be deliberate about my next move. I wanted to join a company whose mission I could wholeheartedly stand behind — one where I could do meaningful…

Evil Martians 

Rails, hacking, and Stripe as a scoreboard: Marc Köhlbrugge’s playbook

Author: Irina Nazarova, CEOTopics: Developer Community, Rails

Marc Köhlbrugge on hacking, building startups, shipping early, why Rails powers his experiments—and his wish for the Ruby ecosystem.

Rails at Scale 

Inline RBS comments support for Sorbet

Sorbet has greatly improved how we read, understand, and maintain code at Shopify. But let’s face it—sometimes, the syntax isn’t the friendliest.

In this post, I’ll walk you through how we added support for inline RBS comments into Sorbet, preserving Sorbet’s strong type safety and type checking speed while adopting the cleaner syntax of RBS, making Ruby development smoother and more enjoyable for us.

Sorbet at Shopify

Sorbet is a type checking tool for Ruby that enables developers to gradually add static type annotations, improving code stability and reliability by catching errors early and facilitating refactoring. It also includes a language server, enhancing the development…

avdi.codes 

What’s the difference between Rails’s try and the safe navigation (&.) operator? – Andy Croll

For those who don’t know. This is also something I’ve covered on Graceful.Dev.

Both try and the safe navigation operator (&.) both provide ways to safely call methods on objects that might be nil. However, they have some key differences.

Source: What’s the difference between Rails’s try and the safe navigation (&.) operator? – Andy Croll

AkitaOnRails.com 

Dissecando um Modelfile de Ollama - Ajustando Qwen3 pra código

A notícia quente do dia é o lançamento do novo modelo Qwen3. Eu mesmo postei a respeito hoje E já fiquei bem impressionado. Achei que ia deixar por isso mesmo, mas aí vi este tweet:

ivan qwen tweaks

Veja o texto completo neste link

Mas ele dá dicas de como "tunar" esse novo modelo, mais pra questões matemáticas e fiquei pensando se tem como tunar pra desenvolvimento de software. Antes que pesquisadores mais avançados me xinguem: essa é minha primeira vez mexendo nos parâmetros de uma LLM, então se quiserem adicionar contexto nos comentários, sejam bem vindos.

Vamos lá. Primeiro, o que são esses TopP, TopK e tudo mais que o Ivan fala no tweet dele? São parâmetros de KEY SAMPLING (sorteio de chaves). É…