#​697 — April 4, 2024

Read on the Web

Together with  FastRuby.io

Ruby Weekly

Vernier: A Next Generation CRuby (3.2+) Profiler — A sampling profiler that can track multiple threads, GVL activity, GC pauses, idle time, and more. If you’ve been enjoying Tenderlove’s recent livestreams, you may have ▶️ seen it on there. Once you’ve captured a profile, you can view it in a few ways (including on the web), but here’s some example output.

John Hawthorn

Need to Upgrade Rails with Zero Downtime? — Ready for Rails 7.2? Top-notch engineering teams (from startups to Fortune 500 companies) trust the FastRuby.io team in mission-critical upgrades. Leverage our 30,000+ dev hours of experience: Get to Ruby 3.3 and Rails 7.2 with zero downtime🔥


Kamal: Hot Deployment Tool to Watch — or a Game Changer? — First published about what was then called MRSK, the Evil Martians have updated their take on DHH’s container-based deployment tool from a 2024 perspective. If you’re not yet using Kamal or want to understand when/why you should/shouldn’t use it, this is for you.

Evil Martians

📗 In related news, Josef Strzibny has released the Kamal Handbook, a 'missing manual' for Kamal, complete with a foreword by 37signals' Donal McBreen.

RubyGems Not Vulnerable to the xz/liblzma Backdoor — If you follow tech news more broadly, you’ll have seen news about a backdoor in the xz/liblzma project. While the vulnerability has far reaching implications, the RubyGems team has done an audit of its effect on RubyGems (including every gem) and found no issues.

Samuel Giddins

📄 Articles, Tutorials & Videos

Ruby Benchmark: Data.define, Struct, OpenStruct — A comparison of Data.define, Struct, OpenStruct – all ways to conveniently define data objects.

Lucian Ghinda

▶  Frontend Ruby with Glimmer DSL for Web — A talk from last month’s Montreal.rb meetup by Andy Maleh, best known for his work on Glimmer, about taking Ruby into the browser to create frontend apps.

Andy Maleh

▶  🤡 How to Make Your Rails App 'Fart' — Clearly intended as an April Fools’ joke, but with a nonetheless practical angle that you could hopefully use for something more edifying than fart noises.. 😅

Drifting Ruby

Rails 8 Adding Rate Limiting to Action Controller via Kredis Limiter Type — Rails 8 will provide a rate_limit method to define rate limiting rules within controllers.

Siddharth Shringi

Why and How to Replace aasm (acts_as_state_machine) with Rails Enum today
Szymon Fiedler

Rails Cronjobs: Moving from Whenever to sidekiq-cron (with Active Job)
Stefan Wienert

🛠 Code & Tools

Introducing Ruzzy: A Coverage-Guided Ruby Fuzzer — Fuzzing is a form of dynamic testing that feeds random inputs to a test subject and Ruzzy is the latest gem to offer fuzzing Ruby code. After a quick usage example, there’s a lot of information here about implementation details.

Matt Schwager

Gemsmith 21.5: CLI Tool for Smithing New Ruby Gems — An ideal tool if you want to go a step beyond Bundler’s gem skeletons. The homepage does a good job showing off the main features, but there’s also its GitHub repo.

Brooke Kuhlmann

Hookdeck: The Amazon EventBridge Alternative — Receive, transform, filter, route, and send messages across your EDA with an event gateway for engineering teams.

Hookdeck sponsor

📋 Clipboard: Cross-Platform Access to the Clipboard — A library of over 10 years’ vintage, but still maintained, supporting modern versions of Ruby (including JRuby), and clipboard access on Linux, macOS, Windows, WSL, and more.

Jan Lelis

PermanentRecords: Soft-Delete for Your ActiveRecord Records — A way to prevent Active Record objects being destroyed, as long as their model has a deleted_at column available. An alternative to ActsAsParanoid.

Jack Danger

React on Rails 14: Bringing React, Webpack, and Rails Together — A major release because Ruby 2.7 support is dropped, but otherwise broadly stays the same and still worth a look if you want to integrate more closely with React in a Rails app – here’s how it works.


ActiveRecordCursorPaginate: Cursor-Based Pagination for Active Record — Paginate through an AR relation using cursor pagination. It also supports ordering by any column on the relation.



Build Mission Control for a Global Weather Balloon Constellation — WindBorne is supercharging forecasts with smart weather balloons launched from three continents; we're hiring a fullstack web dev.
WindBorne Systems

Principal Full-Stack Rails Engineer (Remote) — Ruby FinTech w +10yr Track Record. NVDA, Bitcoin ETFs, Retirement Income, you name it. Helping investors research their options.
Mitre Media