Railsで設定ファイル

(注)動作確認はRails2.0RC1。多分1.2系でもOK。
Railsで自前configというかメッセージリソースと言うかの標準的な方法がいまいち分かりません。一応この辺も踏まえつつ、前のプロジェクトで教えてもらったのを参考に*1こんな感じで作ってみました。以下でパスは作成したrailsアプリの下です。

lib/app_resources.rb

require 'singleton'
require 'yaml'

class AppResources
  include Singleton
  # resource file name
  RESOURCE_FILE = "#{RAILS_ROOT}/config/app_resources.yml"
 
  # usage: AppResources["key_name"]
  def self.(key)
    self.instance[key]
  end
  
  # usage: AppResources.instance["key_name"]
  def (key)
    load
    @app_resources[key]
  end

  # usage: AppResources.instance.load
  def load
    @app_resources ||= YAML.load_file(RESOURCE_FILE)
  end
end

設定

config/app_resources.ymlという名前で設定ファイルを用意。

# example
message:
  confirm: 'いいですか?'
  error: 'ダメです'

config/environment.rbの最後のほう*2に以下を記述

AppResources.instance.load

呼び出し例

AppResources["message"]["confirm"]

ちなみに

作った後でAppConfigというものを知った・・・orz。まぁ、設定の仕方がちょい面倒そうなのでこっちを使い続けてみる。エロい人はRails::Configurationにつっこんで行くもんなんだろうな。へたれでごめんなさい。生まれてきて済みません。

*1:と言うかパクった・・・勝手にブログネタにして済みません。

*2:あるいはconfig/initalizersの設定ファイル中