2013-05-08 52 views
0

我接手工作的Rails 3应用程序从离岸供应商未初始化常数和轨道控制台在这条线出现故障:的Rails在初始化

Settings.defaults[:processing_fee] = '0.99' 

在文件配置/初始化/ settings.rb

我把这个文件与git blame中的内容进行了比较,它与之匹配。我已经删除了这个文件的内容,并且它运行,所以它不喜欢这一行。阅读所以我已经创建了文件名并且保持单数。在另一个SO post之后,我在config/application_settings.rb中创建了另一个文件。在控制台中找不到常数。它移动到/初始化产生轨控制台

/Users/sam/apps/tickat/config/initializers/application_settings.rb:1:in `<top (required)>': uninitialized constant SETTINGS (NameError) 

从这个内容:

SETTINGS[:processing_fee] = '0.99' 

看来,一些关于我的环境是不接受我的常量在这里。我首先注意到这推向Heroku,并可以在控制台的开发中复制这个错误。我问周围,我卡住了。我敢肯定,这是我疯狂的东西,山姆

+1

您可以尝试在该行之前添加'SETTINGS || = {}'。你的错误是告诉你,你正试图在一个还不存在的散列上设置一个键/值对。如果尚未初始化,那么'|| ='运算符会将SETTINGS设置为空的散列。 – niiru 2013-05-08 15:41:47

+0

是的,什么是设置?一类?哈希?这可能是有人忘记在你的仓库中提交一个文件,在这种情况下,你需要逆向工程设置。我会让它成为一个空类并添加类方法.settings。 – poseid 2013-05-08 15:56:51

回答

1

这可能是有人忘了提交一个文件在你的应用程序的回购。

如果是这种情况,并且无法从作者处获取文件,则需要对“设置”进行逆向工程。我想使它成为一个空的模块:

module Settings 

    def self.defaults 
    @defaults ||= {} 
    end 

end 

,看看你能走多远,你会得到更多的错误之前...

编辑:您可以在控制台中看到这个哈希值是如何initalized:

irb(main):008:0> Settings.defaults 
=> {} 
irb(main):010:0> Settings.defaults[:a] = 1 
=> 1 
irb(main):011:0> Settings.defaults 
=> {:a=>1} 
+0

没有错误,但没有添加常量。我会添加:processing_fee ='0.99'作为该空数组的成员吗?不确定。 – sam452 2013-05-08 16:08:24

+0

这里的技巧是你让初始化程序设置默认值。它取决于你想要什么,以及默认值来自哪里,但到目前为止,它看起来像你的应用程序期望在Settings.defaults的散列 – poseid 2013-05-08 16:11:46

+0

额外的步骤密封交易,thx – sam452 2013-05-08 17:38:48