Ruby:用类方法模拟哈希设置器?

时间:2011-10-08 04:35:03

标签: ruby

由于某些应用程序的工作方式(例如某些Liquid无法访问实例变量)我希望用户能够访问和设置实例内外的配置变量,所以现在我做:

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

然而,这只是给他们只读访问权限,我想知道是否有办法模拟哈希My_Module::My_Class.config[:symbol] = value或者我是否应该让setter有两个属性。

1 个答案:

答案 0 :(得分:2)

为什么不使用哈希?

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

这似乎可以达到你想要的效果