由于某些应用程序的工作方式(例如某些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有两个属性。
答案 0 :(得分:2)
为什么不使用哈希?
class MyClass
def self.config
@@config ||= {}
end
end
这似乎可以达到你想要的效果