Ruby 3.4 Frozen String Literals: What Rails Developers Actually Need to Know
Ruby 3.4 takes the first step in a multi-version transition to frozen string literals by default. Your Rails app will continue working exactly as before, but Ruby now provides opt-in warnings to help you prepare. Here’s what you need to know.
The Three-Phase Transition Plan
Ruby is implementing frozen string literals gradually over three releases:
Ruby 3.4 (Now): Opt-in warnings when you enable deprecation warnings Ruby 3.7 (Future): Warnings enabled by default Ruby 4.0 (Future): Frozen string literals become the default
What Actually Changes in Ruby 3.4
By default, nothing changes. Your code runs exactly as before. But when you enable deprecation warnings:
1 2 3 4 5 6 # Enable warnings to see what will break in the future Warning [ :deprecated ] = true # Now string mutations emit warnings csv_row = "id,name,email" csv_row << ",created_at" # warning: literal string will be frozen in the future
Important: These warnings are opt-in. You won’t see them unless you explicitly enable them.
Why Should You Care?
... continue reading