我是一個簡單的傢伙,我只想要一個可以從控制器訪問的YAML配置文件。就這樣。Rails 3 - 我的配置文件太複雜了嗎?
首先,我創建了config/app_config.yml
,其中包含我想要的配置值。到現在爲止還挺好。
然後,我創建lib/app_config.rb
,其中包含:
module AppConfig
def self.config
@@config ||= {}
end
def self.config=(config)
@@config = config
end
end
最後,我創建config/initializers/load_app_config.rb
,其中包含:
# the ./ is necessary for some reason, though no examples online use it...
require './lib/app_config'
AppConfig.config = YAML.load_file("#{Rails.root.to_s}/config/app_config.yml")
我應該跳過load_app_config.rb
乾脆,並分配AppConfig.config
其他方式(也許在模塊本身)?
看來我做它太複雜了..
這是我的第一種方法。但是,當我嘗試這樣做時,從我的控制器訪問'AppConfig'會導致未初始化的常量錯誤。我剛剛嘗試過,並收到相同的錯誤。 'AppConfig'是否定義在特殊的地方? – ClosureCowboy
AppConfig在app_config.rb中定義。當你的初始化器運行時,它應該使它可用。爲了幫助解決你的初始化程序是否正確加載,嘗試設置YAML.load(在你嘗試的控制器中的某處,設置YAML.load(Rails.root +'config'+'config.yml'))[Rails.env] .with_indifferent_access使用它並將其分配給'config'或其他東西。然後嘗試訪問config [:attribute] –
也可以驗證您在/ config/initializers中的app_config.rb,而不是您在/ lib中的app_config.rb –