Storing a static array


#1

In the spirit of keeping my app DRY, i would like to store an array of
strings, and call this array in a few views and possibly in my
controller.

Where is the best place to declare an application wide static variable?
And is this possible?

array = [‘why should’, ‘I have to copy this’, ‘every time i want to use
it’]


#2

Well, if it’s not going to change, you make it a constant.
Constants in ruby are in uppercase.
MY_ARRAY = [‘why should’, ‘I have to copy this’, ‘every time i want
to use > it’]
Normally this should be enough, but if you want to go extra safe you
can freeze it, since an array is an object (http://www.ruby-doc.org/
core/classes/Object.html#M000354).

where to put it in Rails: one option is to declare it in a file in the
lib directory. Rails loads what is in lib.
To make sure it will never conflict with any other, you could put it
into a module, and call it as
ModuleName::MY_ARRAY

Elise


#3

you’re right, that is cleaner.


#4

unless you really want an array, for some reason


#5

You can also look at using an external configuration file instead of
constants:
http://www.stephenbartholomew.co.uk/2008/8/22/simple-application-wide-configuration-in-rails.
Check out the comments for further ideas.

Steve


#6

Thanks a bunch for the help, for now its just one array, but sooner or
later i’m sure I’ll want to branch out to your yml solution. Appreciate
the help!!!