我有一个Rails 3应用程序,我使用以下约定来设置默认值...
默认设置位于config/settings.yml
,看起来像......
twitter_app_secret: '234wer234'
facebook_app_id: 'notset'
facebook_app_secret: 'notset'
session_token: '123456789er3se901234567890'
...而且我可以在应用程序中调用这些设置,例如Settings.twitter_app_secret。在控制台中它就像......
ruby-2.1.5@learn marklocklear:learn marklocklear$ rails c
Loading development environment (Rails 3.2.21)
2.1.5 :001 > Settings.twitter_app_secret
=> "234wer234"
我正在努力将此应用更新到Rails 4,并且该应用无法加载以下错误:
NameError: uninitialized constant Settings
这是我继承的遗留应用。 Rails 4中的一些Rails Magic of Rails 3是否会导致这种情况无效?
答案 0 :(得分:0)
正如Hunter的评论所示,设置不是预先配置的类。有几种方法可以用最少的重新配置来修复问题:
首先,您可以将列出的配置添加到config / application.rb,如下所示:
config.twitter_app_secret: '234wer234'
config.facebook_app_id: 'notset'
config.facebook_app_secret: 'notset'
config.session_token: '123456789er3se901234567890'
然后在你的应用程序中访问它们:
Rails.configuration.twitter_app_secret
其次,您可以将值添加到config.yml而不是settings.yml。有关该流程的详细说明,请访问http://edgeguides.rubyonrails.org/configuring.html
我猜你的应用程序中有一个名为Setting的类,它从该YAML文件中提取值。这是我能看到你的控制台输出工作的唯一方法,除非有一些特殊的配置。
答案 1 :(得分:-3)