我最近用 Configatron 替换了一个自制的配置模块,但我无法让一个用例正常工作。
当我尝试使用配置值作为 Object.const_get 的参数时,如下所示:
def formatter_class
Object.const_get(configatron.formatter)
end
我收到以下错误:
file.rb:10:in `const_get': can't convert Configatron::Store to String
(Configatron::Store#to_str gives Configatron::Store) (TypeError)
配置器分配看起来像这样(简化):
configatron.formatter = case
when condition?
'ExportFormat'
else
'ScreenFormat'
end
即使我这样做configatron.formatter = 'ScreenFormat'
,我也会得到同样的错误。
我也尝试过这种formatter_class
方法的变化。这失败了:
def formatter_class
Object.const_get(configatron['formatter'])
end
当然,这成功了,但不会满足我的用例:
def formatter_class
Object.const_get('ScreenFormat')
end
我究竟做错了什么?