---
title: "🌻 Puma 6.0 released"
publication: "Ruby Weekly"
issue: 625
published_at: "2022-10-20"
canonical_url: "https://rubyweekly.com/issues/625"
---

Plus DHH on leaving the cloud behind, we promote another newsletter, and using Google's alternative regex library from Ruby. |        

#​625 — October 20, 2022 

[Read on the Web](https://rubyweekly.com/issues/625) 🇺🇦  

Together with [![pgAnalyze\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,e_trim,w_350,h_100/e_make_transparent/co_white,e_outline:7/lhwcvgc1asd4fzaahty4.png)](https://pganalyze.com/ebooks/advanced-database-programming-rails-postgres?utm_source=RubyWeeklyPrimaryMasthead10202022)  

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/sdbzrec5foifztkileal.jpg)](https://shopify.engineering/relationships-between-ruby-top-100-packages-dependencies)  

[Finding Relationships Between Ruby’s Top 100 Packages and Their Dependencies](https://shopify.engineering/relationships-between-ruby-top-100-packages-dependencies) — RubyGems recently began rolling out a new security policy for protecting the most heavily used gems, but what about the _dependencies_ of those gems? Kevin got to work using the (very useful) [RubyGems data dumps](https://rubygems.org/pages/data) and found that _‘24 of the 112 big gems rely on small gems’_ but really the journey is more interesting than the outcome here. 

Kevin Lin   

[Puma 6.0 'Sunflower' Released](https://github.com/puma/puma/blob/master/6.0-Upgrade.md) — [Puma](https://puma.io/) is arguably the leading HTTP server for Rack based apps right now and 6.0 is a significant release with overall performance improvements, experimental [Rack 3](https://github.com/rack/rack/blob/main/UPGRADE-GUIDE.md) support, support for Sidekiq 7 ‘capsules’, [and more](https://github.com/puma/puma/blob/master/History.md#600--2022-10-14). Note that Ruby 2.2 and 2.3 support has been dropped. 

Puma Contributors   [![\](https://copm.s3.amazonaws.com/4c59da67.png)](https://pganalyze.com/ebooks/advanced-database-programming-rails-postgres?utm_source=RubyWeeklyPrimary10202022) 

[Free eBook: Advanced Database Programming with Rails and Postgres](https://pganalyze.com/ebooks/advanced-database-programming-rails-postgres?utm_source=RubyWeeklyPrimary10202022) — Learn about subqueries, materialized views, and custom data types in Postgres and Rails. We walk through realistic real-life examples, translating first into SQL, and then into Rails code. Every example comes with source code so you can follow along. 

pganalyze sponsor   

[DHH and Basecamp: "Why We're Leaving The Cloud"](https://world.hey.com/dhh/why-we-re-leaving-the-cloud-654b47e0) — Rails’ creator David Heinemeier Hansson is also CTO at Basecamp, 37signals or whatever it’s called this week, and as a _prettttty_ significant Ruby and Rails shop, it’s interesting to see his take on the cloud vs self hosting. In other news, DHH has also discovered that [LinkedIn is actually pretty good](https://world.hey.com/dhh/linkedin-71ee75d9). 

David Heinemeier Hansson   

✉️ [The Short Ruby Newsletter](https://newsletter.shortruby.com/p/issue-14-2022) — A newsletter that's not by us! But don’t be fooled, it’s actually _waaaay_ longer than _Ruby Weekly_ but does a good job of digging up Ruby related tips, opinion and discussion from Twitter in particular. A good way to keep up with tips and chatter while we stick to the boring stuff ;-) 

Lucian Ghinda   

[Improving Your Code with RubyCritic](https://blog.appsignal.com/2022/10/19/improve-code-in-your-ruby-application-with-rubycritic.html) — [RubyCritic](https://github.com/whitesmith/rubycritic) is a meta-tool for producing reports about Ruby code quality. It uses other tools like Reek, SimpleCov, Flay, and Flog to produce reports about things like complexity, code smells, and test coverage. 

Brena Monteiro   

**QUICK BITS:** 

- The [dry-rb](https://dry-rb.org/) family of libraries [has adopted Zeitwerk](https://dry-rb.org/news/2022/10/17/dry-rb-adopts-zeitwerk-for-code-loading/) for code (auto)loading.
- [gemdex.org](http://gemdex.org/) is a new and experimental way to search for Ruby gems by placing weights on different priorities you might have.
- A few weeks ago, Dave Kimura began doing weekly 'This Week in Rails' video news roundups on YouTube. [▶️ Here's this week's video.](https://www.youtube.com/watch?v=fUiGMERL53E&list=PLoQwKu-bfLSakGBJEBrGRpSV_sqA2jbTc) _(4 minutes.)_   

[ViewComponent in The Wild: Building Modern Rails Frontends](https://evilmartians.com/chronicles/viewcomponent-in-the-wild-building-modern-rails-frontends) — The first in a two-part series on using ViewComponents, which is allegedly the frontend rage in Rails (and [at GitHub](https://viewcomponent.org/viewcomponents-at-github.html)) right now. This post focuses mostly on design patterns and the benefits of such. 

Evil Martians   

[How to Build Your Own Rails Generator](https://www.honeybadger.io/blog/build-a-rails-generator/) — In the context of Rails, [_generators_](https://guides.rubyonrails.org/generators.html) are workflow tools that can be used to automate tasks, generate other files, and even generate other generators! This article explores them, including how to build your own from scratch. 

William Kennedy   

[A Deep Dive into Active Record Validations](https://www.honeybadger.io/blog/active-record-validations/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby) — Accepting user input is critical to Rails applications, but without validations, it can cause problems. [Learn why](https://www.honeybadger.io/blog/active-record-validations/?utm_source=rubyweekly&utm_medium=email&utm_campaign=ruby). 

Honeybadger sponsor   

[Pagination in Hanami Apps with ROM](https://hanamimastery.com/episodes/32-rom-pagination) — Hanami and [Ruby Object Mapper](https://rom-rb.org/) focus on keeping things as simple, extensible, and maintainable as possible. This approach to pagination is no exception and includes validating the pagination parameters. 

Seb Wilgosz (Hanami Mastery)   

[Time Ranges Are Clearer When Querying Databases](https://andycroll.com/ruby/time-ranges-are-clearer-when-querying-databases/) — Consider using range expressions instead of string fragments when querying for a period of time - they’re shorter and less prone to bugs. 

Andy Croll   

[Enumerating Musical Notes](https://kevinjmurphy.com/posts/enumerating-musical-notes/) — A look at using Array and Enumerable to teach Ruby (and you) how to play guitar. It’s a fun and different problem to solve with the language. 

Kevin Murphy  

🛠 Code & Tools  

[re2: Ruby bindings to Google's RE2 Regex Library](https://github.com/mudge/re2) — RE2 bills itself as _“a fast, safe, thread-friendly alternative to backtracking regular expression engines”_ and this project brings it into the Ruby world. Note that re2’s [regex syntax](https://github.com/google/re2/wiki/Syntax) differs from what you might be used to. v1.5.0 adds [a new ‘set’ feature](https://github.com/mudge/re2/releases/tag/v1.5.0) for matching against a collection of patterns simultaneously. 

Paul Mucur   

[pg_enquo: A Way to Securely Query Against Encrypted Data](https://enquo.org/components/pg_enquo/) — [Enquo](https://enquo.org/) (standing for “ENcrypted QUery Operations”) is an admittedly niche (for now) approach as it also requires client support (currently only in Rust and Ruby – yes, there's a Rails integration) but it’s interesting to see experiments in this area given increasing concern and legislation around data privacy and security. 

Matt Palmer   

[Register for Unblock 22 - A CI/CD Conference by Buildkite](http://buildkite.com/unblock?utm_campaign=CPress&utm_source=ppc&utm_medium=Q4-2022-Ruby-Weekly&utm_term=Sign-Up-Unblock) 

Buildkite sponsor   

[FastPage: Faster Pagination for ActiveRecord with Deferred Joins](https://github.com/planetscale/fast_page) — Given it’s from the PlanetScale managed MySQL folks, you won’t be surprised _this is for MySQL users only._ It uses a MySQL specific optimization to improve offset/limit queries. 

PlanetScale   

[premailer-rails-revived: For Inlining CSS into HTML Emails](https://rubygems.org/gems/premailer-rails-revived) — [premailer](https://github.com/premailer/premailer) is the established gem for this task with [premailer-rails](https://github.com/fphilipe/premailer-rails) integrating it with Rails. After [some questions around its maintenance](https://github.com/fphilipe/premailer-rails/issues/272), however, this fork appeared to add Rails 7 support. The original author of `premailer-rails` has since [promised fresh development](https://github.com/fphilipe/premailer-rails/issues/272#issuecomment-1280045490) so you’ll need to do your research before picking a solution in the interim. [GitHub repo](https://github.com/Intrepidd/premailer-rails). 

Adrien Siami   

[Transactable 0.1: DSL for Transactional Workflows atop Function Composition](https://www.alchemists.io/projects/transactable/) 
Alchemists   

[Ruby Transactional Notification System Saves Engineering Time](https://www.courier.com?utm_campaign=cooper-press&utm_source=email&utm_medium=ruby-weekly-10-20-brief-link&utm_content=homepage) 

Courier.com sponsor   

- [Net::SCP 4.0](https://github.com/net-ssh/net-scp)
 ↳ Pure Ruby implementation of the `scp` protocol.
- [dry-monads 1.5](https://github.com/dry-rb/dry-monads)
 ↳ Useful, common monads in idiomatic Ruby.
- [dry-validation 1.9](https://github.com/dry-rb/dry-validation)
 ↳ Validation library with type-safe schemas and rules.
- [Good Job 3.5](https://github.com/bensheldon/good_job)
 ↳ Multithreaded, Postgres-based, ActiveJob backend for Rails.
- [Yake 0.7](https://github.com/amancevice/yake)
 ↳ Rake-like DSL for writing _AWS Lambda_ handlers.
- [SyntaxTree 4.0.2](https://github.com/ruby-syntax-tree/syntax_tree)
 ↳ A fast Ruby parser and formatter.
- [Phonelib 0.7.4](https://github.com/daddyz/phonelib)
 ↳ Phone number validation and formatting with Google's `libphonenumber`
- [RubyGems 3.3.24](https://blog.rubygems.org/2022/10/17/3.3.24-released.html)     

Jobs  

[Backend Engineer, Ruby on Rails (Remote)](https://booqable.com/careers/backend-developer/) — Booqable is a SaaS application for the global rental industry. We are looking for an experienced Backend Developer. 
Booqable   

[Find Ruby Jobs Through 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=find-your-next-job) — Create a profile on Hired to connect with hiring managers at growing startups and Fortune 500 companies. It's free for job-seekers. 
Hired    

👾 And two for fun.. 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/tnxs2ho7lblz3uiqurxc.jpg)](https://gist.github.com/amirrajan/757bf21ba6f8908cdfa98a4d2923fa2e)   

[A New Tech Demo of the DragonRuby Game Toolkit](https://gist.github.com/amirrajan/757bf21ba6f8908cdfa98a4d2923fa2e) — For some reason, the [DragonRuby Game Toolkit](https://dragonruby.org/toolkit/game) hasn’t quite caught _my_ imagination yet, but it’s fun to see what other people are achieving with it, and this demo is pretty neat for only a few hundred lines of Ruby. _(Video example included – yes, did you know you can host videos on GitHub gists now?)_ 

Amir Rajan   

_Or if you prefer your games to be a bit more textual.._  

[An Experiment in Building a Roguelike in Ruby](https://github.com/Davidslv/vanilla) — Very early days for this passion project by a developer who is keen for feedback – it’s more a maze game so far, but he explains his work quite well in the README. 

David Silva         

Curated by Peter Cooper 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/).
