首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当值用作参数时无法将Configatron::存储为字符串错误转换为Object.const_get

当值用作参数时无法将Configatron::存储为字符串错误转换为Object.const_get
EN

Stack Overflow用户
提问于 2014-11-13 15:50:11
回答 2查看 921关注 0票数 2

我最近用Configatron替换了一个本土的配置模块,但是我无法让一个用例工作。

当我尝试使用configatron值作为Object.const_get的参数时,如下所示:

代码语言:javascript
复制
def formatter_class
  Object.const_get(configatron.formatter)
end

我得到以下错误:

代码语言:javascript
复制
file.rb:10:in `const_get': can't convert Configatron::Store to String 
  (Configatron::Store#to_str gives Configatron::Store) (TypeError)

configatron分配如下(简化):

代码语言:javascript
复制
configatron.formatter = case
                          when condition?
                            'ExportFormat'
                          else
                            'ScreenFormat'
                        end

即使我做了configatron.formatter = 'ScreenFormat',我也会得到同样的错误。

我也尝试过formatter_class方法的变体。这是失败的:

代码语言:javascript
复制
def formatter_class
  Object.const_get(configatron['formatter'])
end

当然,这是成功的,但不会实现我的用例:

代码语言:javascript
复制
def formatter_class
  Object.const_get('ScreenFormat')
end

我做错了什么?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-11-13 16:13:50

我解决了我的问题。结果,您可以调用configatron.whatever,如果没有初始化,它将返回一个Configatron::Store

在访问值之前,我插入了对configatron.has_key? 'formatter'的调用。当它返回false时,我发现错误发生在一个尚未初始化值的代码路径中。一旦初始化了值,错误就不再发生了。

票数 3
EN

Stack Overflow用户

发布于 2020-08-18 21:45:37

当.yml配置文件丢失时发生。或者你要找的钥匙不在那里。

地点:/config/NAME.yml

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26912865

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档