I was wondering where the best place is to put global values, such as
consts? Is environment.rb a good (and kosher) place? Or should I place
them in the ApplicationHelper, some custom global helper, or other?
When I said semi-global I guess I was referring to strings, const
ints, etc. which may be shared between two or more controller/views.
I’m guessing in this scenario placing them in a helper is the best
solution?
I was wondering where the best place is to put global values, such as
consts? Is environment.rb a good (and kosher) place? Or should I place
them in the ApplicationHelper, some custom global helper, or other?
When I said semi-global I guess I was referring to strings, const
ints, etc. which may be shared between two or more controller/views.
I’m guessing in this scenario placing them in a helper is the best
solution?
The various config hooks are a pretty good place for global stuff. For
the “semi-global” case, I normally create a module named after my app
and place these things in there, with defaults. I can then override
defaults in environment.rb.
I put all global stuff in (of course) config/environment.rb. These are
the
settings that are consistent across dev, test and production
environments.
I then have a config/constants.rb that are application specific and may
be
modified as features are added/modified. I load it by adding the
following
line in config/envrionment.rb:
I ignore the environment.rb from the svn repository so it doesn’t get
updated and therefore won’t be overridden with an svn update. Some
items
such as an ENCRYPTION_SALT constant would be different on a test box
than
the production box and should go in environment.rb. Production may also
be
running a different RAILS_GEM_VERSION, so we wouldn’t want to
accidentally
update that setting.
Other application constants and some methods on those constants I put in
constants.rb. I add them here because no manual work needs to be done
to
update the environment.rb. And the application gets these updates with
a
deploy.
It’s a simple solution that has worked and I haven’t had any issues.
I second the namespacing in config/environment.rb. That added level of
safety that the module gives helps me sleep at night knowing I won’t be
breaking Rails’ code or that of any plugins/gems/etc. Provided I create
a
unique module name and not something like Rails.
I was wondering where the best place is to put global values, such as
consts? Is environment.rb a good (and kosher) place? Or should I place
them in the ApplicationHelper, some custom global helper, or other?
Adding them to an active-record-model that is loaded when it’s
requested is also an idea, which I use myself…
With a class-method you can get the class from the db, and pass on the
method-call:
Passes requests on to the object below
def self.method_missing(method, *args)
GlobalConfig.find(:first).send(method, *args)
end
greetings,
Wybo W.
–
:
History, Informatiekunde (computer linguistics, IR, webtech) and
Philosophy