I discuss issues with the original Ractor implementation in Ruby 3.0 and the improvements made in Ruby 4.0. Along the way, I introduce Ractor::Wrapper, a Ruby class that wraps legacy non-Ractor-compatible Ruby objects such as database connections so they can be accessed by multiple Ractors.
I spent twelve and a half years working at Google, much of that time as the Ruby language lead for Google Cloud. As I transition out of the role, I look back on what made Google great, and what made it not-so-great.
Please ignore any account on Twitter/X that claims to be me. They appear to have installed a bot to generate garbage content after I deleted my account. A cautionary tale.
Part 4 in a series on writing a Discord "slash" command in Ruby using Google Cloud Functions, showing how to split a long response across multiple messages.
Part 3 in a series on writing a Discord "slash" command in Ruby using Google Cloud Functions, showing how to respond to commands, and call external APIs and handle secrets in production.
Part 2 in a series on writing a Discord "slash" command in Ruby using Google Cloud Functions, showing how to authenticate and interact with the Discord API to add a command to a Discord channel.
Part 1 in a series on writing a Discord "slash" command in Ruby using Google Cloud Functions, showing how to set up a Discord bot, deploy a webhook to Cloud Functions, and validate requests.
This article explores the difference between Ruby's instance_eval and class_eval methods, and takes a peek into the depths of the Ruby execution context.