#​668 — September 7, 2023

Read on the Web

Normal service has been restored – I'm back from my summer vacation 😅 If you haven't had an issue of Ruby Weekly for a few weeks, it's my fault, not yours, but we're now back all the way through till Christmas.. hopefully. There's a lot to catch up on, so let's go.
Peter Cooper, your editor

Together with  Fullscript

Ruby Weekly

Ruby Outperforms C: Breaking the Catch-22 — YJIT’s ability to improve performance by adapting to run-time behavior can increase the speed of our code in a way that dropping down to C can’t, demonstrates Aaron. This should encourage us to write as much pure Ruby as possible without needing to consider dropping down to C.

Aaron 'tenderlove' Patterson

Aaron went a step further on the performance train this week by demonstrating how to speed up StringScanner based lexers.

Upgrading to Ruby 3 in Small Steps — Upgrading Ruby versions can be a challenging task for large applications and teams. This is how an engineer at Fullscript broke the problem down into many small deployments to get their application from Ruby 2.7 to 3.1. Explore our career page and discover the exciting possibilities that await you.

Fullscript sponsor

DHH: 'Turbo 8 is Dropping TypeScript' — As we might say in England, DHH knows how to “throw the cat among the pigeons” (explanation) and get people talking. This time, TypeScript is his target. He’s not a fan and he doesn’t want it in Rails’ Turbo. Unsurprisingly, this sent TypeScript-land into a tizzy on Twitter, but bad luck, it’s already been ripped out.

David Heinemeier Hansson

🎙️ If you want to hear more from DHH, he went on The Rails Changelog podcast to discuss Rails 8, Kamal, The Rails Foundation, and more.

📕 Articles and Tutorials

Let's Read the Turbo Source: What Happens When You Click a Link? — Code reading is one of the best ways to learn, in my experience, but it helps if you have someone guiding the process. This is a good tour.

Akshay Khot

Seven Ruby Techniques to Improve Your Debugging Skills — No universal platitudes here, these are all Ruby specific techniques, including working out where methods are in complex apps, getting backtraces, and ad-hoc monkey patching.

Ashwini Sukale

Free eBook: Advanced Database Programming with Rails and Postgres — Learn about subqueries, materialized views, and custom data types in Postgres and Rails. Realistic real-life examples, and source code so you can follow along.

pganalyze sponsor

Speed Up Your Rack Application with HTTP — If you’re using Rails, it does a lot of this HTTP header wrangling for you, but that doesn’t mean you shouldn’t understand how it works.

Steve Polito (thoughtbot)

Let's Implement map from First Principles — A little functional programming that uses higher-order functions to recreate a common collection method so you can get func-y.

Akshay Khot

Appropriately Using Thread.handle_interrupt — If you are writing multi-threaded code, you need to think about how and when interrupts can occur, or you could end up with deadlocks and other problems.

Ben Sheldon

Roda + Turbo Streams = ❤️ — You don’t have to use Rails to get Hotwire and Turbo Streams.

Felipe Vogel

Throttling Rails Logins with Rack::Attack — Middleware and Rack make some crucial things straightforward, like saving your app from DoS attacks.

Greg Molnar

Collecting Prometheus Metrics from Multi-Process Web Servers, The Ruby Case
Michal Kazmierczak

▶  Adding System Tests to a Rails App
Dave Kimura


TravelJoy | Senior Full Stack Engineer | Remote in USA/Canada | Full-Time — TravelJoy is the market network for leisure travel. Thousands of travel agents love and depend on our product every day.
TravelJoy - Bring the joy back into travel planning

Senior Backend Engineer (Backend) — 12M user devices sent us data daily last week, 6M of them opened the app. Apply your knowledge and help make our users healthier.

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

🛠 Code & Tools

Flipper 1.0: A Feature Flag Solution for Rails — If you want to easily turn features on and off for different users or groups of users in your app, Flipper is for you. It began life while John worked at GitHub (he famously built an app that was acquired by GitHub) and now not only deserves its 1.0 milestone, but it’s now a more serious project and product overall, with Garrett Dimon coming on as a full-time developer on the project, and a new free tier to the Flipper Cloud hosted service. Onwards and upwards!

John Nunemaker and Garrett Dimon

Grape 1.8: Opinionated Framework for Creating REST-like APIs — Grape can run on Rack or be easily pulled into existing apps using Rails or Sinatra, say, and provides a neat DSL to build RESTful APIs.

Michael Bleigh, Intridea Inc. et al.

Ready for Rails 7.0.7? Need to Upgrade but Have No Time? We Can Help! — Whether you’re upgrading from one or five versions ago—we ensure a smooth process that doesn’t sacrifice your roadmap.

Ruby on Rails upgrade services sponsor

Dude Policy: Policy Objects from the 'Current User' POVcurrent_user.dude.able_to_edit_article?(article)

Tomas Valent

PyCall: Call Python Functions from Ruby — A long standing library but that, as of now, supports Ruby 2.4+ and Python 3.7+.

Kenta Murata