Want more GoRails?

GoRails is packed full with 727 lessons just like this one.

Sign up to get full access or log in to your account and sit back.

Frozen String Literals in Ruby 3.4

December 16, 2024

Track your progress

Sign in to track your progress and access subscription-only lessons.

Log In

Your Teacher

Hi, I'm Chris. I'm the creator of GoRails, Hatchbox.io and Jumpstart. I spend my time creating tutorials and tools to help Ruby on Rails developers build apps better and faster.

About This Episode

Ruby 3.4 now raises warnings anytime you mutate a string literal. Learn how to fix our code and use frozen string literals to improve performance.

Notes

How to handle Frozen String Literals

"Chris" << " Oliver" #=> Will raise a deprecation warning or error

Instead, we want to create mutable strings:

# Using the unary operator to create a UTF8 string
+"Chris" << " Oliver"

# Or String.new to create a ASCII-8BIT string
String.new

You can run Ruby with deprecation warnings enabled:

RUBYOPT="-W:deprecated" ruby script.rb

And make sure to continue using the frozen string literal magic comment until it is enabled by default.

# frozen_string_literal: true

Or enable it with the flag:

RUBYOPT="--enable-frozen-string-literal" ruby script.rb

This is a great option to enable in CI to ensure you're not mutating frozen string literals.

Want to stay up-to-date with Ruby on Rails?

Join 88,096+ developers who get early access to new tutorials, screencasts, articles, and more.

    We care about the protection of your data. Read our Privacy Policy.