#529 — November 26, 2020

Read on the Web

Ruby Weekly

Static Typing for Ruby and Adopting Sorbet at Scale — A walkthrough of the process Shopify followed to support developers and measure their progress toward static typing with Sorbet. In the second part, Adopting Sorbet at Scale, they dig more into the technicalities of the benefits obtained.

Shopify

Moving My Serverless Project to Ruby on Rails — When your serverless project grows from one function, to two, then to a whole collection of them, the complexity grows too, and using something more integrated like Rails might suit you better after all.

Alex Kotliarskyi

Unlock The Secret Powers of the New Relic Ruby Agent — We're bringing observability to the mainstream by open sourcing our agents and SDKs to remove barriers to telemetry data collection. Come learn to unlock the Ruby agent's secret superpowers to gain a richer telemetry experience.

New Relic sponsor

How Fast Are Ractors? — With Ruby 3 due out in about a month, the anticipation for ractors (a new concurrency primitive we’ve mentioned numerous times before) is growing. Noah compares Ractors to threads and forks with mixed results.

Noah Gibbs

Hunting Down the Ruby 'Inplace' Bug — A writeup of an epic quest to find and slay a string corruption bug in Ruby that lurked in the bowels of C.

Peter Zhu

Matestack: Rails Views 'Reimagined' — Matestack is a pure-Ruby web UI framework for creating frontend components in Ruby without writing any Javascript (though it is extensible with Vue.js.) Reactivity ‘included if desired.’ It’s LGPLv3 licensed and clearly with a commercial angle intended longterm. This podcast episode goes into more depth.

Matestack GmbH

📘 Articles & Tutorials

▶  A Rubyist's Apple M1 Review — An initial look into Apple’s new Arm-based M1 architecture from the perspective of a Ruby developer including what tools do and don’t work or require workarounds.

David Kimura

Symbol#to_proc Explained, The Short Version — I would call it more the “midsized version” or “a really, well-done version.” The examples are quite good and there are a few tangential learnings that are interesting.

Pierre Jambet

Running Ruby on RISC-V — In the wake of the M1 Macs, Mike takes a look at another architecture that Ruby can run on, namely RISC-V, an open-source ISA.

Mike Perham

Engine Yard: The Ruby on Rails DevOps Experts

Engine Yard sponsor

▶  Error Handling with Monads — From the RUG::B remote meetup, a look at approaches to error handling, the problems with Exception, ending with a live-coded refactoring of a class to using monads for results.

Vitaly Pushkar

How to Introduce Composite Primary Keys in Rails — Using composite keys increased performance for Shopify’s multi-tenant use case by making data access more efficient for common queries. Check out how one of the oldest and largest Rails apps continues to improve.

John Arthorne (Shopify)

Adding Authentication in Rails 6 with Rodauth — Rodauth is a plugin for the Roda web framework, but it is easy to add to Rails (and other frameworks.) The design principles of Roda (simplicity, maintainability) are certainly apparent in Rodauth.

Janko Marohnić

▶  Why GitHub's CLI Team Switched From Ruby to Go — GitHub famously uses a lot of Ruby (and was founded by four Rubyists!) so it’s interesting to see where it doesn’t make sense. This 3 minute portion of a podcast with Mislav Marohnić of the GitHub CLI team breaks it down. Portability, basically.

The Changelog

Using Cloudfront CDN to Reduce Asset Delivery Time From 30 Seconds to 3 Seconds — And how to get things working with a Rails app.

Vinay Chandran

How RubyRussia 2020 Took a Large Ruby Event Online

💻 Jobs

Senior Ruby Backend Developer (m/f/d) — We’re looking for a talented Ruby dev to join our InsureTech team and help us shape the insurance world of tomorrow. Offering responsibility, ownership, and growth possibilities.

Getsafe GmbH

Senior Ruby Developer (Fully Remote / FR) — Join an enthusiastic team of 11 engineers working on Ruby on Rails and commit to a fast-growing company innovating in Procurement.

PER ANGUSTA

Find Your Next Job Through Vettery — Create a profile on Vettery to connect with hiring managers at startups and Fortune 500 companies. It's free for job-seekers.

Vettery

ℹ️ Interested in running a job listing in Ruby Weekly? There's more info here.

🛠 Code and Tools

lib-ruby-parser: A Ruby Parser Written in Rust — Rust is an increasingly popular high performance systems language being used to make tooling for all sorts of things lately, and now a Ruby parser too. But why? The author explains all in this article.

Ilya Bylich

Spreadsheet Architect v4.1.0 Released — Create XLSX, ODS or CSV spreadsheets from plain old Ruby objects, ActiveRecord relations, or tabular data.

Weston Ganger

Scout APM - A Ruby Developer’s Best Friend. Try Free for 14 Days — Scout's intuitive UI streamlines performance insight so you can pinpoint & fix issues before customers ever see them.

Scout APM sponsor

ractor-tvar: Software Transactional Memory Implementation for Ractor and Thread on Ruby 3

Koichi Sasada

Blazer 2.3.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

acts_as_tenant 0.5.0: Easy Multi-Tenancy for Rails in a Shared Database Setup — An interesting example of someone (Chris Oliver of GoRails fame) taking on an old library that hasn’t had a release in a year, tidying it up, refactoring, adding modern tests, and leave it in a better state than they found it.

Erwin M

Rubyist: Powerful iOS Automation for Ruby Enthusiasts? — In private beta (you can sign up for their TestFlight mailing list) Rubyist promises to let you “edit, run, and automate Ruby code on iOS.” We’ll wait and see.

Rubyist