3
1

More than 1 year has passed since last update.

【Ruby】dynamic constant assignmentというエラー

Last updated at Posted at 2022-02-09

状況

ページタイトルをhelperを使って動的に表示するために、以下のコードを書いた。

application_helper.rb
def full_title(page_title)
  BASE_TITLE = "HOGE".freeze
  if page_title.blank?
    BASE_TITLE
  else
    page_title + " - " + BASE_TITLE
  end
end

ここで、BASE_TITLEは定数であるため、UPPER_SNAKE_CASEで定義している。
またrubyにおける定数は再定義ができるソフトな(破壊的変更が可能な)代物なので、再定義ができないようにfreezeメソッドを使って凍結しておいた。

実行した結果、
syntax errorとして以下のエラーが表示された

dynamic constant assignment
BASE_TITLE = "title"
^~~~~~~~~~

対処法

メソッドの外で定数を定義する。

application_helper.rb
BASE_TITLE = "HOGE".freeze
def full_title(page_title)
  if page_title.blank?
    BASE_TITLE
  else
    page_title + " - " + BASE_TITLE
  end
end

どうやらrubyでは、メソッドの中で定数を定義できない仕様になっているらしい。

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1