---
title: "Pattern matching: 'A big feature, after all.'"
publication: "Ruby Weekly"
issue: 676
published_at: "2023-11-02"
canonical_url: "https://rubyweekly.com/issues/676"
---

Plus AWS tells us to 'plz move off old ruby', HTTPX 1.1, and an SQLite update. |        

#​676 — November 2, 2023 

[Read on the Web](https://rubyweekly.com/issues/676)  

Together with [![Makandra\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_250,h_100/e_make_transparent/co_white,e_outline:7/wrexuzvpv8efeghv2ucz.png)](https://railslts.com/?utm_campaign=ruby-weekly-sponsoring&utm_source=newsletter&utm_medium=paid&utm_term=rails-lts)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/utpass5bv2cu91kx3jwr.jpg)](https://zverok.space/blog/2023-10-20-syntax-sugar2-pattern-matching.html)  

[A Deep Dive into Ruby Pattern Matching](https://zverok.space/blog/2023-10-20-syntax-sugar2-pattern-matching.html) — Victor continues with his investigation into 'controversial' additions to Ruby, with a multi-part sub-series (here’s [part two](https://zverok.space/blog/2023-10-27-syntax-sugar2-pattern-matching-cont.html) – a third is teased) specifically about [_pattern matching_](https://docs.ruby-lang.org/en/master/syntax/pattern_matching_rdoc.html), a feature that landed in Ruby 2.7 but that has grown since. 

Victor Shepelev   

[Deploying Rails on a Single Server with Kamal](https://nts.strzibny.name/deploying-rails-single-server-kamal/) — A cloud provider-agnostic tutorial that deploys Rails, Postgres, and Redis on the box while also handling HTTPS, Docker, and web assets using 37signals’ deployment tool. 

Josef Strzibny   [![\](https://copm.s3.amazonaws.com/86ca8721.png)](https://railslts.com/?utm_campaign=ruby-weekly-sponsoring&utm_source=newsletter&utm_medium=paid&utm_term=rails-lts) 

[Your Rails App – Protected by Rails LTS](https://railslts.com/?utm_campaign=ruby-weekly-sponsoring&utm_source=newsletter&utm_medium=paid&utm_term=rails-lts) — Rails LTS is the game changer for older Rails applications. Get extended support for old Ruby on Rails versions, Gem replacement, compatibility with modern Ruby versions – and above all: peace of mind knowing your app is secure. 

Rails LTS by makandra sponsor   

[Skiff: Deploy Static Sites with Nginx + SSI and Kamal](https://github.com/basecamp/kamal-skiff) — 37signals is now using Skiff to deploy marketing and similar sites, and DHH has recorded [▶️ a screencast showing off how it works](https://www.youtube.com/watch?v=YoabUEzpM6k). 

37signals   

- 📅 [RubyConf Taiwan](https://2023.rubyconf.tw/) is taking place in Taipei this December. Matz will be there, and they've just unveiled [their schedule](https://2023.rubyconf.tw/#schedule).
- 🏁 AWS has announced [the end of support for Ruby 2.3 and 2.4 in AWS SDK for Ruby.](https://aws.amazon.com/blogs/developer/announcing-the-end-of-support-for-ruby-runtimes-2-3-and-2-4-for-the-aws-sdk-for-ruby/) Loving the `plz move off old ruby` tag they've used.. 😏
- 🌱 In other AWS news, Elastic Beanstalk has [a new Amazon Linux 2023-based branch that runs Ruby](https://docs.aws.amazon.com/elasticbeanstalk/latest/relnotes/release-2023-10-19-al2023.html) (and version 3.2.2, no less).
- 🧵 It looks like CRuby may soon support [profiling a single, specific thread.](https://bugs.ruby-lang.org/issues/10602)
- ❤️ [My Love Letter to Rails (And Ruby)](https://cult.honeypot.io/reads/why-ruby-on-rails-is-not-dead/) – Honeypot's Patrick Helm gets all emotional in advance of [▶️ Honeypot's Rails documentary](https://www.youtube.com/watch?v=NaEG5Dz7xzM) landing next week.
- 🖼 If you're using RMagick to work with ImageMagick, make sure you're on the latest version (>=5.3) as [there's a memory leak in older versions.](https://rubysec.com/advisories/CVE-2023-5349/)
- 🤔 DHH [writes about 'negative visualization'](https://world.hey.com/dhh/negative-visualization-in-practice-60f11cb7) and reveals a reason he's attached to his 'one person framework' idea is because he wants to build tools with which he could build a new business from scratch, solo, should he need to.  

📕 Articles & Tutorials  

[An Experiment in Adding Sorbet and RBS to a Small Project](https://radanskoric.com/experiments/experiment-gradual-typing) — Radan likes using statically typed languages so set out to look at Ruby’s most common approaches to working with static types. Ultimately, he found improving his tests to have a better outcome. 

Radan Skorić   

[Working with Attachments in Action Mailer](https://railsnotes.xyz/blog/rails-actionmailer-attachments) — An introduction to bringing file attachments to your ActionMailer-sent emails, including how to attach single or multiple files, set custom encodings and mime_types, and attach images as inline attachments to display in the email body. 

Harrison Broadbent   

[A Look at LiteDB for Rails](https://blog.appsignal.com/2023/11/01/a-deep-dive-into-litedb-for-ruby%20on-rails.html) — LiteDB is the database portion of [Litestack](https://github.com/oldmoe/litestack), essentially a bundle of useful features organized around an SQLite database, including a job queue, cache, and metrics. LiteDB, in particular, is a wrapper around SQLite3. 

Julian Rubisch   

[🚀 Need an Action Plan to Upgrade Your App to Rails 7.1 and Ruby 3.2?](https://www.fastruby.io/roadmap?utm_source=cooperpress&utm_medium=ruby-weekly&utm_campaign=rubyweeky-676&utm_term=roadmap-budget&utm_content=action-plan) — Need estimates for your budget? [The team behind the Rails upgrade workshops](https://twitter.com/FastRubyIO) can help with a thorough action plan. 

FastRuby.io | Upgrade Services sponsor   

[Rails Domain Redirects](https://supergood.software/rails-domain-redirects/) — If your app is available on multiple domains but you only want to serve requests from one, here’s how to handle it. 

Jared Norman   

[Notes from a MySQL to Postgres Migration Story](https://www.stefanwienert.de/blog/2023/10/25/migrate-from-mysql-to-postgresql-rails/) — [PGLoader](https://github.com/dimitri/pgloader) came in handy as it handles migrations to Postgres from MySQL, SQLite, and SQL Server. 

Stefan Wienert   

[Understanding Rails Callbacks and Common Pitfalls](https://www.dsdev.in/understanding-rails-callbacks-common-pitfalls) — _“Try without a callback, if you really think it belongs there then move it into a callback. But don’t start with a callback.”_ 

Dhaval Singh   

[Rails 7.1 Brings Unique Normalization Rules for Attributes](https://blog.saeloun.com/2023/11/02/rails-7-1-introduces-active-record-base-normalization/) — `normalizes :name, with: -> name { name.strip.titlecase }` 
Prasanth Chaduvula  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/cigrudxw6ihd2161sbyg.jpg)](https://github.com/countries/countries)  

[Countries 5.7: Useful Info about Countries Packaged into a Gem](https://github.com/countries/countries) — Need country info in an easily used form from Ruby? This gem contains info for each country covering standards ISO3166-1 (countries), ISO3166-2 (states/subdivisions), ISO4217 (currency) and E.164 (phone numbers). 

hexorx   

[sqlite3-ruby 1.6.8: Ruby Bindings for SQLite3](https://github.com/sparklemotion/sqlite3-ruby) — The vendored SQLite 3 version is now [v3.44.0](https://sqlite.org/releaselog/3_44_0.html). If you’re curious what’s new, there are some [SQLite 3.44.0 interactive release notes.](https://antonz.org/sqlite-3-44/) 

Sparkle Motion   

[Do You Know Rails’ _Hidden_ Gems? 🤔](https://www.honeybadger.io/blog/rails-activesupport-stringinquirer/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby) — Read our series spotlighting Rails’ lesser-known gems. Check it out and level up your Rails game! 

Honeybadger sponsor   

[Limiter: A Generic Rate Limiting Mechanism](https://github.com/Shopify/limiter) — It’s not just for incoming requests, but can be used to throttle and rate limit method calls generally. Simple and local to the process. 

Shopify   

[Rika 2.0: A JRuby Wrapper for Apache Tika](https://github.com/keithrbennett/rika) — [Apache Tika](https://tika.apache.org/) is a Java based toolkit for detecting and extracting metadata and text from _over a thousand different file types._ Rika makes it easier to use from JRuby. 

Keith Bennett   

[re2 2.3: Ruby Bindings to Google's RE2 Regex Library](https://github.com/mudge/re2) — A safe, thread-friendly alternative to backtracking regular expression engines. Note that re2’s [regex syntax](https://github.com/google/re2/wiki/Syntax) differs from what you might be used to. v2.2 and 2.3 feature significantly smaller native gems due to some changes in its build process. 

Paul Mucur   

- [HTTPX 1.1](https://gitlab.com/os85/httpx/-/blob/master/doc/release_notes/1_1_0.md?ref_type=heads) – Powerful HTTP/2 and HTTP/1 client for Ruby.
- [ViewComponent 3.7](https://github.com/ViewComponent/view_component/releases/tag/v3.7.0) – Framework for building reusable view components.
- [minitest-rails 7.1](https://github.com/minitest/minitest-rails) – Minitest for Rails. Now supporting Rails 7.1.
- [Truemail 3.1](https://github.com/truemail-rb/truemail) – Framework agnostic plain Ruby email verifier.
- [with_advisory_lock 5.0](https://github.com/ClosureTree/with_advisory_lock) – Advisory locking for ActiveRecord.
- [Memowise 1.8](https://github.com/panorama-ed/memo_wise) – Performance optimized memoization library.
- [Octokit 8.0](https://github.com/octokit/octokit.rb) – Ruby toolkit for the GitHub API.
- [Rake 13.1](https://github.com/ruby/rake/releases/tag/v13.1.0) – Ruby's `make`-like build utility.
- [Arturo 3.0](https://github.com/zendesk/arturo) – Feature sliders for Rails apps.
- [JRuby 9.3.12.0](https://www.jruby.org/2023/11/01/jruby-9-3-12-0.html) – The 2.6 compatible JRuby branch.
- [Hanami 2.1.0.rc1](https://hanamirb.org/blog/2023/11/01/hanami-210rc1/)
- [Sidekiq 7.2](https://github.com/sidekiq/sidekiq/blob/main/Changes.md#720)    

Jobs  

[Find Ruby Jobs with Hired](https://hired.com/join/?utm_source=newsletter&utm_medium=sponsor&utm_campaign=%28b2c%29%28l-all%29%28r-all%29%28cooper-rubyweekly%29&utm_content=easy-job-hunting) — Hired makes job hunting easy-instead of chasing recruiters, companies approach you with salary details up front. Create a free profile now. 
Hired           

Curated by [Peter Cooper](https://twitter.com/cooperx86) and [Glenn Goodrich](https://twitter.com/ruprict).
Published by [Cooperpress](https://cooperpress.com/). 

[Change your email](https://rubyweekly.com/edit_subscription/*|UID|*) or [Stop getting this newsletter.](https://rubyweekly.com/leave/*|UID|*) 

© Cooper Press Ltd · Fairfield Enterprise Centre, Louth, LN11 0LS, United Kingdom 

Other weekly newsletters we publish include [Postgres Weekly](https://postgresweekly.com/), [React Status](https://react.statuscode.com/), [Frontend Focus](https://frontendfoc.us/), and [JavaScript Weekly](https://javascriptweekly.com/).
