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"
「クラス名::」アクセッサで参照できます。
どこからでも参照できるので便利ですね。