在 Rails 中,我应该在哪里定义可以被Rails堆栈的每一层识别的变量。
例如,我想要一个CUSTOMER_NAME='John'
变量,可以在帮助, rake 任务,控制器中访问和模型。我应该在 Rails 应用程序中定义此变量?
我正在使用 Rails v2.3.2
答案 0 :(得分:15)
在/app/config/initializers
的初始化程序中,这里的所有.rb文件都被加载了,我通常会为这样的事情创建一个名为preferences.rb的文件。
请参阅:http://guides.rubyonrails.org/configuring.html#using-initializer-files
答案 1 :(得分:15)
另一种方法是在config/application.rb
中的配置对象上设置一个键,如下所示:
MyApp::Application.configure do
# ...
config.my_key = 'some "global" value'
end
然后,您可以通过以下方式从应用中的任意位置访问my_key
:
MyApp::Application.config.my_key
此外,Mike Perham描述了一种类似的,虽然是一种更全面的方法in his blog post。
答案 2 :(得分:9)
你想要一个真正的全球常数吗?使用::COSTUMER_NAME
。
你想要一个真正的全局变量?使用$COSTUMER_NAME
(不鼓励)。
你想要一个请求全局变量?使用Hash
方法中的#env
。