Rails在初始化器中未初始化为常量

时间:2013-05-08 15:38:36

标签: ruby ruby-on-rails-3

我从一家离岸供应商手中接管了一个正在运行的Rails 3应用程序,并且rails控制台在这条线上失败了:

 Settings.defaults[:processing_fee] = '0.99'

在文件config / initializers / settings.rb

我已将此文件与git blame中的内容进行了比较并且匹配。我删除了这个文件的内容,它运行所以它不喜欢这一行。阅读SO我已经使文件名和常量奇异。在另一个SO post之后,我在config / application_settings.rb中创建了另一个文件。在控制台中找不到常量。将其移至/ railsizer上的/ initializers

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

来自这个内容:

 SETTINGS[:processing_fee] = '0.99'

看来我的环境不接受我的常量。我首先注意到这推送到Heroku并且可以在控制台的开发中复制此错误。我问过周围,我被卡住了。我确定这是我搞砸的东西,山姆

1 个答案:

答案 0 :(得分:1)

可能有人忘记在您的应用程序的回购中提交文件。

如果是这种情况,并且您无法从作者那里获取文件,则需要对设置进行反向工程。我会把它变成一个空模块:

module Settings

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

end

在你收到更多错误之前,看看你能走多远......

编辑:您可以在控制台中看到此Hash是如何被初始化的:

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