🇺🇦 #​600 — April 21, 2022

Read on the Web

🎉 Somehow we've made it to issue 600 – thanks for your continuing support! Can we make it to 1000? Watch this space in April 2030.. 😁
Your editor, Peter Cooper

Ruby Weekly

Ruby's YJIT Ported to Rust — We briefly mentioned the proposal for this a few months ago, but things have moved fast and now a Rust version of YJIT has already reached parity with the C version! Look for this to come in 3.2. And if you’re asking.. why? Maintainability and management of complexity, mostly.

Ruby Core

⭐️  How to Create a Modern CRUD App with Rails and React — A thorough, and newly updated, tutorial covering building a fully functional CRUD app with Rails 7, SQLite, esbuild, React 18, hooks, React Router, and more. An ideal guide if you want to get a feel for all the moving parts involved in such an app.

James Hibbard

The Best Deployment Tool for Rails — Deploy Rails apps on any cloud, with native support for Rails conventions, full databases support, replication & backups, powerful access management & traffic control features. Try it today for free with an extra $100 in free credits with the code: RubyWeekly!

Cloud 66 sponsor

Ruby 3.1 Introduces Variable Width Allocation for Strings — This is deep stuff that you don’t need to know, but it’s reassuring to know a lot of work is going into making Ruby more efficient. Variable Width Allocation is currently limited to Class and String types and reduces bottlenecks and total memory usage while still maintaining similar performance.

Murtaza Bagwala (Saeloun)

▶  A Chat with Rubyist Mike Perham, the Creator of Sidekiq — Mike is famous in the Ruby world both for developing the Sidekiq background job system, but also managing to turn it into his full time business for ten years now. This fun 50-minute interview digs more into the business side of things, as well as what you should consider if you want to follow his kind of ‘developreneur’ path.

Alphalist podcast

Code Ranges: A Deeper Look at Ruby Strings — If you think string representation and encodings are esoteric, wait until you read how Ruby uses code ranges to optimize scanning a string for valid, encoded characters.

Kevin Menard (Shopify)

Quick Bits:

  • Rubocop has turned 10 years old – congratulations. Bozhidar Batsov shares a little of the story so far and how he's keen to see it last for another decade.

  • RubyGems 3.3.12 has been released. There's also the usual monthly news update from Ruby Together.

  • For ▶️ episode 414, the Ruby on Rails Podcast takes the unusual step of having a guest (Drew Bragg) who turns the tables and interviews the usual host, Brittany Martin.


Software Engineer - Feature Engineering (Remote) — Join a small team building solid, simple solutions for DNS & domain management. 100% remote, diverse & proud of the tools we make.

4 Senior ROR Engineers — Mastered ROR (6-8 years of XP)? Join Anka: The all-in-one solution to export products made of Africa globally. Great technical challenges, fast development opportunities, and a badass team.

Backend Engineer – Ruby on Rails (London or Remote) — Ctrl Group builds digital health products to bring personalised health care to everyone. Apply now to join our brilliant team.
Ctrl Group

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

Custom Ranges in Ruby1..10 is one thing, but what about if you want to support range syntax on your own custom objects? You can do it by just implementing two methods.

Joël Quenneville

The Underrated Power of dry-schemadry-schema is a data structure validation (and coercion) library that’s part of the dry-rb family.

Seb Wilgosz

How to Fake Time in a Postgres Database — Mocking the time in Ruby itself isn’t too tricky (Timecop to the rescue) but what about when it comes to working with databases? Timecop can also help here, but there’s a lot more to think about.

Justin Searls

Keep Up with the Latest in Startups, Tech, & Programming in Just 5 Min — TLDR is a daily newsletter with links and TLDRs of the most interesting stories in startups 🚀, tech 📱, and coding 💻

TLDR Newsletter sponsor

Testing Techniques: The 'I/O Table' — Covers some basic principles of good tests before focusing on improving maintainability by thinking about inputs and outputs and refactoring around that mental model.

Thiago Araújo Silva

▶  How to Add Filtering and Pagination to Data Tables with Hotwire — Once a reasonably clunky feature to add but “now that we have Hotwire, adding filtering to a table with pagination can be done in just a few minutes.”

Cezar Halmagean

The Differences Between count, length and size on an Active Record Association — Which to use, when and why.

Benito Serna

🛠 Code & Tools

command_mapper: A Way to Map External Commands to Ruby Classes — Came out last year but somehow we missed it till now. Think command line argument parsing but within Ruby itself and in a more declarative, higher level way – you really need to see it to get it. GitHub repo.

Hal Brodigan

Bumbler 0.9: Track The Load Progress of Bundler-based Projects — Find those particularly slow loading gems in your projects.

Ian MacLeod

Speed Up Your Builds with Buildkite’s New Plan

Buildkite sponsor

Blazer 2.6.0: A Ruby-Powered Business Intelligence Tool — A system for putting together charts and dashboards based on business data queried with SQL. Supports a wide variety of data sources.

Andrew Kane

sidekiq-scheduler 3.2: Lightweight Job Scheduler Extension for Sidekiq
Moove It

Chatwoot 2.4: Simple, Open Source Live Chat Software