N2-Works
WEB企画・制作/システム開発 大阪拠点

Rails4でグローバルな定数配列やハッシュを定義する

定数を管理するGemにはsettingslogicというのもありますが、普通にGlobalクラスに配列やハッシュを定義したいという需要はあると思います。

少なくとも私はそうでした。

Rails4でのやり方を紹介します。

まずはconfig/initializers/global.rbを作成します。

クラス名は自由なので何でも構いませんが、ここではGlobalという名前でいきます。

config/initializers/global.rb

class Global
  # 配列の例
  HOGE = [
    'ほげ',
    1234,
    'fuga'
  ].freeze
  
  # ハッシュの例
  HOGE_HASH = {
    key1: 'val1',
    key2: 'val2',
    '鍵3': "値3"
  }.freeze
end

 

freezeで定数化していますが、必須ではありません。

それではpryで実行してみます。

[1] pry(main)> Global::HOGE[0]
=> "ほげ"
[2] pry(main)> Global::HOGE[1]
=> 1234
[3] pry(main)> Global::HOGE[2]
=> "fuga"
[4] pry(main)> Global::HOGE_HASH[:key1]
=> "val1"
[5] pry(main)> Global::HOGE_HASH[:key2]
=> "val2"
[6] pry(main)> Global::HOGE_HASH['鍵3'.to_sym]
=> "値3"

「クラス名::」アクセッサで参照できます。

どこからでも参照できるので便利ですね。

[ruby on rails]2016年10月11日 00時00分00秒

※1000文字以内で入力してください

captcha
TOP