我最近用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
我做错了什么?
答案 0 :(得分:2)
我解决了我的问题。事实证明,您可以致电configatron.whatever
,如果未初始化,则会返回Configatron::Store
。
我在访问该值之前插入了对configatron.has_key? 'formatter'
的调用。当它返回false时,我发现错误发生在尚未初始化值的代码路径中。初始化值后,错误不再出现。
答案 1 :(得分:0)
.yml配置文件丢失时发生。或者您正在寻找的钥匙不在那里。
位置:
/config/NAME.yml