カテゴリー:
Rails
タグ:
 Rails settingslogic 定数

このエントリーをはてなブックマークに追加
更新日時:
2013年04月04日(木)
作成日時:
2013年04月04日(木)

前の記事 / 次の記事

config/initializers の配下に

vi constants.rb

OBBR = {
  :config = {
    :site_name = "俺の備忘録"
    :max_pages = 50
  }
}

とかしてもいいんだけど、そうすると読み出す時は

OBBR[:config][:site_name]

ってなって微妙にみずらいし、何より定義するのがだるいので、
サクッと定義出来て

OBBR.config.sitename

みたいに出来る方法を探してみた。
で、ありました、settingslogic

インストール

vi Gemfile

gem 'settingslogic'

$ bundle install

設定

まず、定数用のクラスをつくる。
source にはyamlファイルの保存場所を書く。
namespace に環境を指定することで環境毎に定数を切り替えることが出来る。
クラスの保存場所は起動時に読み込めればどこでもいい。

class Settings < Settingslogic
  source "#{Rails.root}/config/application.yml"
  namespace Rails.env
end

次に yaml を定義する。
yaml ファイルの保存場所と名前は上記のクラスに source で定義した場所と名前で保存する。

vi config/application.yml

defaults: &defaults
  sitename: "俺の備忘録"
development:
  <<: *defaults
  sitename: "俺の備忘録 devel"
test:
  <<: *defaults
  sitename: "俺の備忘録 test"
production:
  <<: *defaults

次のようにして読み出す。

Settings.sitename
#=> "俺の備忘録"

yamlの中では erb も使える。

vi config/application.yml

defaults: &defaults
  magic_number: <%= Datetime.now.strftime("%m") %>

今が4月だったら、

Settings.magic_number
#=> "4"

っていうか定数の中で erb を使う場面っていうのがよく分からん。
いつ使うんだろ。

参考ページ