#​577 — November 4, 2021

Read on the Web

Ruby Weekly

An Introduction to Async Ruby — The async gem (created by the same person who brought FiberScheduler to 3.0) brings simple asynchronous operations to the Ruby table, and without a lot of special APIs or switching libraries around either. The gem has been invited to the standard library, too, so this may be the way of Ruby’s async future?

Bruno Sutic

Prettier Ruby 2.0.0: Formatting Your Ruby Code on SavePrettier is a popular ‘opinionated code formatter’ commonly used to enforce coding styles as soon as you hit save. The Ruby plugin implements Ruby support - this post explains how it works and why a version 2.0 became necessary.

Kevin Newton

ButterCMS Melts into Your Ruby App. #1 Rated Headless CMS — ButterCMS is your content backend. Enable your marketing team to update website + app content without needing you. Try the #1 rated Headless CMS for Ruby today. Free for 30 days.

ButterCMS sponsor

▶  Doing a Rails PR Code Review with a Rails Core Team Member — Kasper Timm Hansen joins Chris Oliver in an hour long tour of how a Rails core team member looks at a typical pull request.



  • The YJIT compiler that should be coming to Ruby 3.1 now has a frequently updated benchmarks page showing the performance improvements of YJIT over time and how they affect different workloads. We're certainly ready for ~20% better performance.

  • We mentioned the release of Opal 1.3, a popular Ruby to JavaScript transpiler, last week - but there's now an official release post covering the improvements.

  • Earlier this week, Hacker News was home to a discussion about whether Ruby will ever have a 'comeback' (in terms of jobs and adoption growth versus other options, I guess).


Software Engineer, Ruby/Rails | Remote within MT (-3/+3 hours) | Full-Time — Build innovative telehealth and workflow tools for over 1.8 million clinicians (including 80% of all U.S. physicians).

Senior Software Engineering Consultant [100% Remote] — Co-founded by Justin Searls, Test Double is an engineering consultancy on a mission to improve the way the world builds software. Work on challenging projects as part of a passionate, open, and honest team.

Find Ruby Jobs Through Hired — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers.

📕 Articles & Tutorials

A Guide to Ruby Structs — A comprehensive guide that covers construction, transformation, pattern matching, refinements, benchmarks, and more. Another one to save in your reference file.

Brooke Kuhlmann

Making a GitHub Issue-Style File Uploader Using Stimulus and Active Storage — Add drag-and-drop as well as copy-and-paste functionality to your UI and then directly upload it with Active Storage.

Jeremy Smith

Spend Less Time Debugging and More Time Building with Scout — Scout APM uses tracing logic, tying bottlenecks to source code so you know the exact line of code causing perf issues. See why Scout is a Ruby devs best friend with a free 14-day trial.

Scout sponsor

Ruby's Got You 'Covered' — Did you know Ruby ships with a Coverage library and it will handle lines, methods, and branches? If you’re using a test coverage library, it’s probably using Coverage.

Kevin Murphy

Metaprogramming 'Smarter' Hashes in Ruby — “Smarter” means giving a hash OpenStruct-like behavior along with never doing this in production because it breaks Rails, among other things. It’s always fun to see how flexible Ruby is, though.

Tyler Porter

▶  Discussing Code Quality with Ernesto Tagwerker — Ernesto Tagwerker is the founder of OmbuLabs, the Rails dev shop behind FastRuby.io. In this episode he discusses code quality and the life of maintaining relevant Ruby gems like Skunk.

The Ruby on Rails Podcast podcast

🛠 Code & Tools

benchmark-memory: Memory Profiling Benchmark Style — Rather than benchmarking performance/running time, this lets you benchmark memory use, but using the same syntax you’re familiar with from Benchmark.

Michael Herold

UserAgentParser: Parse HTTP Client/Browser User Agent Strings — Easily pick out version numbers, browser names, device names and models, etc.

Tim Lucas

RSpotify: A Ruby Wrapper for the Spotify Web API — I was pushed into using Python to write a program to create a playlist on Spotify recently but if I’d known about this then, maybe I could have stuck with Ruby!

Guilherme Sad

Put the “Flow” in Your Workflows with Shortcut

Shortcut (formerly Clubhouse.io) sponsor

JRuby Released — The latest release of the Ruby 2.5.x compatible branch of the JVM-based Ruby implementation.

JRuby Core Team

GoodJob 2.6: A Multithreaded, Postgres-Based, ActiveJob Backend for Rails — Complete support for async, queues, delays, priorities, timeouts, and retries with near-zero configuration. v2.6.0 adds support for cron schedules to be expressed in a more natural way.

Ben Sheldon

minitest-spec-rails: Make Rails Use MiniTest::Spec
Ken Collins