应用范围的全局变量

Mel*_*lon 14 ruby-on-rails ruby-on-rails-2

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

例如,我想有一个CUSTOMER_NAME='John'可以在helper,rake任务,控制器模型中访问的变量.我应该在Rails应用程序中的哪个位置定义此变量?

我正在使用Rails v2.3.2

Pau*_*ves 15

/app/config/initializers这里加载的所有.rb文件的初始化程序中,我通常会为这样的事情创建一个名为preferences.rb的文件.

请参阅:http://guides.rubyonrails.org/configuring.html#using-initializer-files


Mar*_*oda 15

另一种方法是在配置对象上设置一个键config/application.rb,如下所示:

MyApp::Application.configure do
   # ...
   config.my_key = 'some "global" value'
end
Run Code Online (Sandbox Code Playgroud)

然后,您可以通过以下方式my_key从应用中的任何位置进行访问:

MyApp::Application.config.my_key
Run Code Online (Sandbox Code Playgroud)

此外,Mike Perham 在他的博客文章中描述了一种类似的,虽然更全面的方法.


Rea*_*onk 9

你想要一个真正的全球常数?使用::COSTUMER_NAME.你想要一个真正的全局变量?使用$COSTUMER_NAME(气馁).你想要一个请求全局变量?使用Hash#env方法.