应用范围的全局变量

Rails中 ,我应该在哪里定义可以被Rails堆栈的每一层识别的变量。

例如,我想有一个CUSTOMER_NAME='John'变量,可以在helperrake任务, 控制器模型中访问它 。 我应该在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