2012-03-07 11 views
0

にYAMLの設定を渡し初期化子を作成します。は私が私の/ libフォルダに作成したカスタムクラスを持つカスタムクラス

このymlファイルをUserServiceクラスに渡し、いくつかのクラスレベル変数を設定したいとします。

クラス変数の作成方法や変数の設定方法がわかりません。

私のYAMLファイルは次のようなものがあります。

user_service_url: http://www.example.com/user_service/ 

user_service_table: "UserTable1" 

は、だから私のUserServiceのクラスは、公にアクセス可能なこれらの2つの属性を持っている必要があり、彼らはクラス変数(あなたがいけない」のインスタンスを必要とし、それをアクセスすることになっていますインスタンスはそれを参照できるはずです)。

誰かがこれを手伝ってくれますか?

/lib/user_service.rb 

module MYAPP 
    class UserService 
    end 
end 

答えて

2

次のようにあなたがあなたのクラスのハッシュにあなたのYAMLファイルを読み込むことができます。

module MYAPP 
    class UserService 
    SERVICES = YAML::Load(File.open(filepath)) 
    end 
end 

あなたがそのようにのようなものを二つの変数にアクセスすることができます:あなたが希望の場合

UserService::SERVICES['user_service_url'] 

をハッシュリファレンススタイルなしでそれらにアクセスするには、ハッシュを掘り下げるメソッドを記述するか、おそらく解雇時にハッシュルックアップを行うmethod_missingを実装します。

+0

ありがとうございますが、私はこれらのメソッドがクラス変数を参照するようにしたいので、私はイニシャライザでこれをやりたかったのです。私はそれが毎回yamlから読まれることを望んでいない、クラスvarsを設定するために一度だけ。 – Blankman

+0

このような定数にロードされると、毎回YAMLが再読み込みされることはありません。 –

関連する問題