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