本文へスキップ
BecomeCoder

Rubyのエラー · エラー8

FrozenError ― frozenな文字列を変更しようとした

freeze された(変更不可にされた)オブジェクトを破壊的メソッド(末尾に ! が付くものなど)で書き換えようとすると出ます。文字列リテラルの frozen_string_literal: true マジックコメントを付けているファイルでもよく起きます。

出るコード

name = "Aoi".freeze
name << "さん"   # frozen な文字列を破壊的に変更しようとした

エラーメッセージ

can't modify frozen String: "Aoi" (FrozenError)

直し方

破壊的メソッドを避け、新しい文字列を作る非破壊的な書き方にします。

greeting = name + "さん"   # 新しい文字列を作る