In Rails, where should I define the variable which can be recognized by every layer of Rails stacks.
For example, I would like to have a CUSTOMER_NAME='John'
variable which can be accessed in helper, rake task, controller and model. Where should I define this variable in Rails app?
I am using Rails v2.3.2
You want a true global constant? Use
::COSTUMER_NAME
. You want a true global variable? Use$COSTUMER_NAME
(discouraged). You want a request-global variable? Use theHash
in the#env
method.In an initializer in
/app/config/initializers
all .rb files in here get loaded, I usually create one called preferences.rb for things like this.See: http://guides.rubyonrails.org/configuring.html#using-initializer-files
An alternative approach is to set a key on the config object in
config/application.rb
, like so:You can then access
my_key
from anywhere in your app with just this:Also, Mike Perham has described a similar, though a more comprehensive approach in his blog post.