---
title: "Getting Rustier with Ruby"
publication: "Ruby Weekly"
issue: 641
published_at: "2023-02-16"
canonical_url: "https://rubyweekly.com/issues/641"
---

Plus Puma 6.1, Ruby 3.2's URL escaping enhancements, and how 'private' is weird in Ruby. |        

#​641 — February 16, 2023 

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

Together with [![Cloud66 logo\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_250,h_250/e_make_transparent/co_white,e_outline:7/ofjgwnua55tonrserpbl.png)](https://www.cloud66.com/frameworks/rails/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-23-q1-1)  

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/vg6rpa7mvydopzsdjibl.jpg)](https://github.com/matsadler/magnus/releases/tag/0.5.0)  

[Magnus 0.5: A Way to Build Gems with Rust](https://github.com/matsadler/magnus/releases/tag/0.5.0) — Magnus enables the creation of Ruby extensions using Rust by providing an interface to Ruby’s usual C API. You can also embed Ruby in a Rust program. Numerous gems are now implemented with Magnus, including [RuCaptcha](https://github.com/huacnlee/rucaptcha), [Selma](https://github.com/gjtorikian/selma), and [polars-ruby.](https://github.com/ankane/polars-ruby) 

Mat Sadler   

[Ruby Adds WebAssembly Support: What Does It Mean?](https://semaphoreci.com/blog/ruby-webassembly) — Ruby 3.2 introduced the ability to target WebAssembly, so now you can write apps for any modern browser (and more) using Ruby. The future possibilities for WASM are exciting. 

Tomas Fernandez   [![\](https://copm.s3.amazonaws.com/2ff9a02d.png)](https://www.cloud66.com/frameworks/rails/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-23-q1-1) 

[Heroku Alternative - But On Any Cloud](https://www.cloud66.com/frameworks/rails/?utm_source=-&utm_medium=-&utm_campaign=RubyWeekly-23-q1-1) — The convenience of Heroku, but on any cloud & in any region, with persistent storage, custom traffic rules, zero downtime deployments, blue/green & canary releases, WAF, & more. Try it today for free, plus $100 in credits with the code:`RubyWeekly100` 

Cloud 66 sponsor   

[Exploring the Sorbet Ruby _Compiler_](https://www.honeybadger.io/blog/sorbet-ruby-compiler/) — Stripe first teased its [Sorbet](https://sorbet.org/) Ruby type checker almost five years ago (we mentioned it in [issue 402!](https://rubyweekly.com/issues/402)) but they’re also working on developing a performance focused ahead-of-time compiler for Ruby around it.. 

Jeffery Morhous   

[Escaping/Encoding URI Components in Ruby 3.2](https://bibwild.wordpress.com/2023/02/14/escaping-encoding-uri-components-in-ruby-3-2/) — In Ruby 3.2, the standard library’s CGI gem gained two handy new methods: `CGI.escapeURIComponent` and `CGI.unescapeURIComponent`. CGI has long had a (heavily used) `escape` method, but these new methods tackle nuances in escaping strings to be included in path components or query strings. 

Jonathan Rochkind   

[What's New in Rails 7.1](https://blog.appsignal.com/2023/02/15/whats-new-in-rails-7-1.html) — There are a lot of small to medium additions and fixes, but the most exciting might be CTE support and much better Docker support. 

Emmanuel Hayford (AppSignal)   

**QUICK BITS** 

- Emmanuel Hayford is one of the folks who puts together the weekly [official Rails news digests](https://world.hey.com/this.week.in.rails) and [▶️ he went on the Ruby on Rails podcast](https://www.therubyonrailspodcast.com/457) to talk about that, the forthcoming Ruby 7.1, and Ruby 3.2.
- Gift Egwuenu checks in with the latest [monthly update on the RubyGems project](https://blog.rubygems.org/2023/02/16/january-rubygems-updates.html) looking at a busy month of releases both for RubyGems itself and the [RubyGems.org site.](https://rubygems.org/)
- Ruby Central gives us [the lowdown on RubyConf 2023](https://rubycentral.org/news/railsconf-2023-in-atlanta-2/) taking place this April in Atlanta, Georgia.  

📕 Tutorials and Articles  

[Ruby's `private` Keyword is _Weird_](https://blog.jez.io/ruby-private/) — `private` in Ruby acts a little differently to `private` in most other object oriented languages. Jake also draws an interesting parallel between private methods and instance variables. 

Jake Zimmerman   

[My First Hanami App](https://kukicola.io/posts/my-first-hanami-app/) — It’s great to see folks beginning to blog about picking up Hanami for building modern Ruby webapps. _“Hanami is a breath of fresh air”_ says Karol. 

Karol Bąk   

[External Garbage Collection](https://census.dev/blog/external-garbage-collection) — “External” means connections and objects from third-party services or tools requiring disposal. Bradley goes through several approaches, combining a couple for the “Cadillac” of external GC cleanup jobs. 

Bradley Buda (Census Engineering)   

[Want to Drastically Reduce the Risks in Hiring? Evaluate First!](https://www.codeminer42.com/?utm_source=newsletter&utm_medium=ruby_weekly&utm_campaign=contract-to-hire) — Work with well-trained engineers before committing to hiring. If they work out, keep them. If not, just let us know. 

Codeminer42 - Your Software Development Boutique sponsor   

[A Method's _Gravity_](https://allaboutcoding.ghinda.com/a-methods-gravity) — The author claims _“The bigger the method the more new lines of code will be added to it.”_ Hence gravity. Here Lucian tries to sell the idea of keeping methods short (or low gravity, if you will). 

Lucian Ghinda   

[Why Does 0.1 + 0.2 = 0.30000000000000004?](https://jvns.ca/blog/2023/02/08/why-does-0-1-plus-0-2-equal-0-30000000000000004/) — Julia uses Python here but it applies to Ruby too. 

Julia Evans   

[Rails Initializers You Don't Know About: Inflections](https://blog.saeloun.com/2023/02/09/rails-initializers-you-dont-know-about-inflections.html) — _“Inflections are rules that specify how words should be pluralized or singularized in a given context.”_ 
Keshav Biswa  

🛠 Code & Tools  

▶[Puma 6.1: An Overview of What's New](https://www.youtube.com/watch?v=WxiPX2Gk_t8) — A quick (~7 min) video on what’s new in the popular Ruby HTTP server, namely WebSocket support, better systemd support, and other small changes and fixes. [Puma docs](https://puma.io/puma/) and the [v6.1.0 release notes.](https://github.com/puma/puma/releases/tag/v6.1.0) 

Nate Berkopec   

[Rouge 4: Pure-Ruby, Pygments-Compatible Code Highlighter](https://github.com/rouge-ruby/rouge) — This week’s release introduces a new lexer (for Cisco IOS) and includes lots of fixes and improvements to lexers for C#, C++, JavaScript, and other languages. 

rouge-ruby   

[APM Built for Developers, By Developers](https://ter.li/cisc7s) 

Scout APM sponsor   

[Bashly 1.0: Bash CLI Script Generator](https://bashly.dannyb.co/) — Declare the basic user-facing elements of a CLI tool (arguments, environment variables, command groups, default values, and more) and Bashly _generates_ the **bash** code to make it a reality. There are [examples](https://github.com/DannyBen/bashly/tree/master/examples#bashly-examples) in the [GitHub repo.](https://github.com/DannyBen/bashly) 

Danny Ben Shitrit   

[Selma: Selects and Match HTML Nodes using CSS Rules](https://github.com/gjtorikian/selma) — Also has the ability to sanitize HTML. Uses the Rust powered [LOL HTML](https://github.com/cloudflare/lol-html)parser. 

Garen Torikian   

[InvoicePrinter 2.3 (Now Supporting Prawn 2.4 and Ruby 3.1)](https://nts.strzibny.name/invoiceprinter-2.3/) — [InvoicePrinter](https://github.com/strzibny/invoice_printer) is a library for generating PDF invoices. 

Josef Strzibny    

Jobs  

[Curious How Great Products Get Made?](https://www.linkedin.com/jobs/view/3461834976/) — Come help us craft the operating system for modern manufacturing. 
Wherefour   

[Software Engineer (Backend)](https://jobs.ashbyhq.com/stickermule/477eed3e-4aae-46e6-a8ab-0646dbfb11cd?utm_source=Cooperpress) — Join our "kick ass" team. Our software team operates from 17 countries and we're always looking for more exceptional engineers. 
Sticker Mule   

[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      

**RAPID RELEASES:** 

- [telegram-bot-ruby 1.0](https://github.com/atipugin/telegram-bot-ruby)
 ↳ Wrapper for Telegram's Bot API.
- [Syntax Tree 6.0](https://github.com/ruby-syntax-tree/syntax_tree)
 ↳ Interact with the Ruby syntax tree.
 _[🐦 It does quite a lot now..](https://twitter.com/kddnewton/status/1623003080332652565)_
- [Polars Ruby 0.3](https://github.com/ankane/polars-ruby)
 ↳ Fast DataFrames for Ruby.
- [redlock-rb 2.0.1](https://github.com/leandromoreira/redlock-rb)
 ↳ Distributed locks with Redis.
- [Semian 0.18](https://github.com/Shopify/semian)
 ↳ Resiliency toolkit for external requests.
- [Slop 4.10](https://github.com/leejarvis/slop) – Simple Lightweight Option Parsing.
- [Spinach 0.12](https://github.com/codegram/spinach) – BDD framework atop Gherkin.
- [Sidekiq 7.0.5](https://github.com/sidekiq/sidekiq)
- [Mastodon 4.1](https://github.com/mastodon/mastodon/releases/tag/v4.1.0)
- [RubyMine 2023.1 EAP4](https://blog.jetbrains.com/ruby/2023/02/the-rubymine-2023-1-eap4/)
- [RubyGems 3.4.7](https://blog.rubygems.org/2023/02/15/3.4.7-released.html)         

Curated by [Peter Cooper](https://x86.social/@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/).
