我最近用Configatron替换了一个本土的配置模块,但是我无法让一个用例工作。
当我尝试使用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分配如下(简化):
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我做错了什么?
发布于 2014-11-13 16:13:50
我解决了我的问题。结果,您可以调用configatron.whatever,如果没有初始化,它将返回一个Configatron::Store。
在访问值之前,我插入了对configatron.has_key? 'formatter'的调用。当它返回false时,我发现错误发生在一个尚未初始化值的代码路径中。一旦初始化了值,错误就不再发生了。
发布于 2020-08-18 21:45:37
当.yml配置文件丢失时发生。或者你要找的钥匙不在那里。
地点:/config/NAME.yml
https://stackoverflow.com/questions/26912865
复制相似问题