Gem settingslogic 在 application.rb 中配置全局变量会报错

zqalyc · 2014年02月11日 · 最后由 mentor_feng 回复于 2014年02月12日 · 4170 次阅读
application.yml:
defaults: &defaults
  files:
    host: '192.168.1.1'
    port: '8080'

development:
  <<: *defaults

production:
  files:
    host: '192.168.1.1'
    port: '8080'

settings.rb:
class Settings < Settingslogic
  source "#{Rails.root}/config/application.yml"
  namespace Rails.env
end
application.rb:

FILE=Settings.fles

application.rb 会报错:

Uncaught exception: uninitialized constant Settings

Settings::Setting.files

拿不到是肯定的.. FILE=Settings.fles 才在第二步,这时候 Rails 核心还没启动完成,ENV 都没加载。你的代码肯定也还没加载进来。

#1 楼 @leopku 还是报同样的错

#2 楼 @saiga 那全局变量应该放在哪个文件里?

原因见 2 楼 @saiga 解决方法:1、在 application.rb 里写死;2、将配置读取部分延后,比如:单独放在 initializers 目录下

#4 楼 @zqalyc

# 手动加载 settings.rb
require File.expand_path('../../app/settings/settings.rb', __FILE__)

FILE=Settings.fles
需要 登录 后方可回复, 如果你还没有账号请 注册新账号