---
title: "Strings can only get better"
publication: "Ruby Weekly"
issue: 704
published_at: "2024-05-23"
canonical_url: "https://rubyweekly.com/issues/704"
---

Plus new IRB extensions, Ruby Central has lots of news, and Rails 8 development is a go! |        

#​704 — May 23, 2024 

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

Together with [![WorkOS\](https://res.cloudinary.com/cpress/image/upload/c_fill,g_auto,w_514,h_98/e_make_transparent/co_white,e_outline:9/tdfxwgk852ui9leli4wm.png)](https://workos.com/?utm_source=cpruby&utm_medium=newsletter&utm_campaign=q22024)   

Ruby Weekly 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/w8ptmrjo5al1shheb6ev.jpg)](https://gist.github.com/fxn/bf4eed2505c76f4fca03ab48c43adc72)   

[The Future of Frozen String Literals](https://gist.github.com/fxn/bf4eed2505c76f4fca03ab48c43adc72) — A key change in Ruby 3.4 ([now in preview](https://www.ruby-lang.org/en/news/2024/05/16/ruby-3-4-0-preview1-released/)) is string literals in files without `frozen_string_literal` will begin to act as if frozen and raise _warnings_ if mutations occur, pending a future enforcement of this as the default. Why? Xavier explains the history of automatically freezing string literals in Ruby and why this is happening now. 

Xavier Noria   

[An FAQ for _Namespaces_: Possibly a Key Future Ruby Feature](https://gist.github.com/tagomoris/4392f1091f658294bd4d473d8ff631cb) — [This proposal](https://bugs.ruby-lang.org/issues/19744) introduces the ability to create virtual 'namespaces' that allow loading libraries, extensions, etc. so apps can load different versions of the same libraries. This could solve some ‘dependency hell’ issues, such as in testing. Matz has suggested this could become a distinctive feature for an eventual Ruby 4.0. 

Satoshi Tagomori   [![\](https://copm.s3.amazonaws.com/6e401582.png)](https://workos.com/?utm_source=cpruby&utm_medium=newsletter&utm_campaign=q22024) 

[WorkOS: Enterprise-Grade Auth You Can Implement in Minutes](https://workos.com/?utm_source=cpruby&utm_medium=newsletter&utm_campaign=q22024) — Like an enterprise plan in a box: WorkOS provides flexible, easy-to-use APIs to integrate SSO, SCIM, Audit Logs, User Management, and more. Used by some of the hottest startups including Perplexity, Vercel, & Webflow. Future-proof your auth stack with WorkOS. 

WorkOS sponsor   

- 🚂 [Development on Rails 8 is a go!](https://github.com/rails/rails/commit/37fd0e7fe4990c4e5db10813bae3bba10c8be479)
- 📣 [Ruby Central has quite a substantial news update](https://rubycentral.org/news/may-2024-newsletter/) this month to go through.
- 🤔 Someone on Reddit [asked if Ruby's 'Ractors' have a future](https://www.reddit.com/r/ruby/comments/1cuvwv8/does_ractors_have_a_future/) given they remain an experimental feature. JRuby's Charles Oliver Nutter noted there's still a _lot_ of work to do to make them stable, and that JRuby offers the best parallelism for Rubyists today. [More on Ractors here.](https://docs.ruby-lang.org/en/master/ractor_md.html)
- 🛠️ Talking of JRuby, Charles [posted a tweet](https://x.com/headius/status/1793322531182485870) noting that many of the JVM's debugging and profling tools work _great_ with JRuby, but JRuby 10 will make things even better.
- 🇸🇪 [Baltic Ruby](https://balticruby.org/) (with an epic page design) takes place in Sweden in just a few weeks. They're offering some [major discounts](https://ruby.social/@balticruby/112489494730435900) if you want to attend. Who's going to be there? [Yes, Matz!](https://balticruby.org/lineup)
- 🔒 [A quick update from Samuel Giddins](https://blog.segiddins.me/2024/05/17/residency-update/) on his work as Ruby Central's security engineer in residence.  

📄 Articles, Tutorials & Videos  

[Setting Up a Rails Development Environment with Dev Containers](https://spin.atomicobject.com/rails-dev-containers/) — _“the steps we followed to set up a pretty nice-to-work-with Rails development environment using Docker and VS Code Dev Containers.”_ 

Anjali Munasinghe   

[Five Things to Avoid in Ruby](https://blog.appsignal.com/2024/05/22/five-things-to-avoid-in-ruby.html) — While in at least one case, it’s more about what to add to your code (Rubocop), these basic pointers are worth a skim. 

Martin Streicher (AppSignal)   

[Rails Version Updates Made Simple from the Standard Ruby Folks 🤩](https://link.testdouble.com/vnp) — Test Double simplified linting and formatting for Ruby, so your team can focus. Do the same for Rails version updates. 

Test Double sponsor   

[A Testing Anti-Pattern: Merged Setup Data](https://www.codewithjason.com/testing-anti-pattern-merged-setup-data/) — Making tests clear is a favor for both yourself and others, but when there’s lots of setup data, it can make it harder to understand the system’s state at the beginning of each test. The lesson: Constrain setup data to what each test really needs. 

Jason Swett   

[Adding Views to an API-only Rails App](https://www.honeybadger.io/blog/rails-api-front-end/) — The `--api` option strips away a lot of the user-facing features, but what if you want to bring some of them back? 

Jeffrey Morhous (Honeybadger)   

[RailsConf Detroit 2024: A Co-Chair's Perspective](https://andycroll.com/ruby/railsconf-detroit-2024-cochairs-perspective/) — Chairing an event the size of RailsConf is no mean feat. This is a good look behind the curtain. 

Andy Croll   

📄 [Comparing SQLite Based Rails Cache Stores](https://oldmoe.blog/2024/05/13/comparing-sqlite-based-rails-cache-stores/) Mohammad A. Ali 

📄 [In Ruby 3.4, `Range#size` Raises `TypeError` if the Range Isn't Iterable](https://blog.saeloun.com/2024/05/17/ruby-3-4-range-size-raises-type-error-for-iterable-range/) Prasanth Chaduvula 

📄 [Expressive Class Hierarchies Through Dynamically-Instantiated Support Objects](https://www.fullstackruby.dev/object-orientation/2024/05/20/more-robust-class-hierarchies-with-nested-support/) Jared White 

📄 [From Sleep to Speed: Making Rdkafka Sync Operations 16 Times Faster](https://mensfeld.pl/2024/05/from-sleep-to-speed-making-rdkafka-sync-operations-16-times-faster/) Maciej Mensfeld 

📄 [UUID Benchmark War: Benchmarking UUID Approaches for Postgres](https://ardentperf.com/2024/02/03/uuid-benchmark-war/) Jeremy Schneider  

🛠 Code & Tools 

[![\](https://res.cloudinary.com/cpress/image/upload/w_1280,e_sharpen:60,q_auto/siz8vlumfgl6idx04fy2.jpg)](https://alchemists.io/projects/irb-kit)  

[IRB Kit: A Suite of Extensions for IRB](https://alchemists.io/projects/irb-kit) — We recently mentioned [IRB’s introduction of an extension API](https://github.com/ruby/irb/blob/master/EXTEND_IRB.md), so it’s great to see it already being used. IRB Kit offers a variety of helpers to do things like interact with the clipboard, adjust the prompt based on the environment, search for methods, and more. 

Brooke Kuhlmann   

[Hookdeck CLI: Free No-Account-Required Alternative to ngrok](https://dub.sh/cli-rw) — Receive webhooks on your localhost using the Hookdeck CLI. Inspect & replay HTTP events with the Hookdeck Console. 

Hookdeck sponsor   

[EvilSeed: Create Partial Anonymized Data Dumps](https://github.com/evilmartians/evil-seed) — If you want to bring back some realistic looking data from your production environment to use in staging or dev, while caring about user privacy, this is ace. 

Andrey Novikov   

[A Ruby Middleman Tailwind Starter Blog Template](https://github.com/harrison-broadbent/ruby-middleman-tailwind-starter-blog) — A [Middleman](https://middlemanapp.com/) blog template configured with TailwindCSS, Markdown parsing, code highlighting, a sitemap, and more. Ideal for some Ruby-flavored blogging. 

Harrison Broadbent   

[ActiveRecordAnonymizer: Anonymize Your ActiveRecord Attributes](https://github.com/keshavbiswa/active_record_anonymizer) — If you don’t want to anonymize data as a dump but do it in-situ. 

Keshav Biswa   

⚙︎ [Turbo Mount: Use React, Vue, Svelte, and Other Components with Hotwire](https://github.com/skryukov/turbo-mount) Svyatoslav Kryukov 

⚙︎ [Ruby LSP Plugin for IntelliJ IDEA and RubyMine](https://plugins.jetbrains.com/plugin/24413-ruby-lsp) Vitaly Slobodin   

- [Rails 7.0.8.3](https://rubyonrails.org/2024/5/17/Rails-Versions-7-0-8-3-has-been-released) and [Rails 7.1.3.3](https://rubyonrails.org/2024/5/17/Rails-Versions-7-0-8-2-and-7-1-3-3-have-been-released) – Security releases.
- [Shakapacker 8.0](https://github.com/shakacode/shakapacker/blob/main/docs/v8_upgrade.md) – Use Webpack to manage app-like JavaScript modules in Rails. A successor to Webpacker.
- [Autosuggest 0.3](https://github.com/ankane/autosuggest) – Autocomplete suggestions based on what users search for.
- [RDoc 6.7](https://github.com/ruby/rdoc/releases/tag/v6.7.0) – Ruby's long standing documentation system.
- [PgHero 3.5](https://github.com/ankane/pghero) – Postgres performance dashboard as a Rails engine.
- [Rails Data Migrations 1.3](https://github.com/anjlab/rails-data-migrations) – Separate migration scripts for_data_.
- [Good Job 3.29](https://github.com/bensheldon/good_job) – Postgres-backed job queue for Rails.
- [ActsAsParanoid 0.10](https://github.com/ActsAsParanoid/acts_as_paranoid) – _Soft delete_ for Active Record.
- [Mocha 2.3](https://github.com/freerange/mocha) – The mocking and stubbing library.
- [Title 0.1](https://github.com/calebhearth/title) – I18n for your `<title>`s.
- [Passenger 6.0.22](https://blog.phusion.nl/2024/05/18/passenger-6-0-22/)         

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/).
