我试图定义一个可以从应用程序中的任何位置访问的全局常量。为此,我在初始化程序中使用以下内容创建了一个文件:
APP_CONFIG = YAML.load_file(Rails.root + "config/app_config.yml").with_indifferent_access
在haml视图中,我正在做这个
- if APP_CONFIG[:param]
%b HOLA MUNDO
但是它没有定义APP_CONFIG,
我尝试在两个地方使用:
@@APP_CONFIG
@APP_CONFIG
$APP_CONFIG
没有任何作用,我也尝试过:
module MyApp
class Application
APP_CONFIG = .....
end
end
从视图来看:
MyApp::Application::APP_CONFIG[:param]
也是一个错误 未初始化的常量MyApp :: Application :: APP_CONFIG
答案 0 :(得分:1)
在模块中包装它会更好。像这样:
require 'yaml'
module AppConfig
class << self
def settings
@settings ||= hash.with_indifferent_access
end
def path
File.join(Rails.root, 'config' , 'app_config.yml')
end
def hash
YAML.load_file(path)
end
end
end
有了这个,你就可以做到这一点:
puts AppConfig.settings['foo']
使用该模块,您可以通过多个步骤收集数据,并轻松测试每个步骤。扩展行为也会更容易。
我将其放在app / tools / app_config.rb
之类的内容中