应用范围的全局变量

时间:2011-12-02 12:32:41

标签: ruby-on-rails ruby-on-rails-2

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

例如,我想要一个CUSTOMER_NAME='John'变量,可以在帮助 rake 任务,控制器中访问和模型。我应该在 Rails 应用程序中定义此变量?

我正在使用 Rails v2.3.2

3 个答案:

答案 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