2011-10-08 13 views
0

インスタンス変数にアクセスできないLiquidの一部など、アプリケーションの一部が動作するため、ユーザーはインスタンスにアクセスして設定変数を設定できるようになりました。私はちょうどセッターは二つの属性を持って作る必要がある場合は、ハッシュMy_Module::My_Class.config[:symbol] = valueかを模擬する方法があった場合Ruby:クラスメソッドのモックハッシュセッター?

module My_Module 
    class My_Class 
    attr_accessor :config 

    def self.config 
     @@config if @@config 
    end 

    def initialize(config) 
     config[:root] = config[:root].rchomp('/') 

     @@config = @config = { 
     cache: 'flat', 
     store: 'flat', 
     plugins: 'plugins', 
     pages: 'pages', 
     posts: 'posts', 
     static: 'static', 
     templates: 'templates', 
     destination: 'public' } 

     @@config.deep_merge(config) 
    end 
    end 
end 

は、しかしそれらだけが唯一の読み取りアクセス権を与えることを、私は思っていました。

答えて

2

なぜハッシュを使用しないのですか?それが達成するであろうように思える

class MyClass 
    def self.config 
    @@config ||= {} 
    end 
end 

あなたは

+0

何をしたい彼は、@@ config'を 'のハッシュを使用しているが、インスタンスが作成されたときにのみ初期化されます。 –

+0

私は彼が何を望んでいるのかわからない –

+0

それは私が欲しいものにかなり近いですが、私はそれを使ってコードを少し修正することができます。 –

関連する問題