How to maintain App config data?

N

Nate Wiger

I'm writing an app in Rails, but some modules need to work outside of
Rails. In these classes, I'd like to have a common way to access
configuration data. Two approaches I though of:

1. Use a Singleton class ala the Logger concept, and have
a "conf" object floating around that can provide the
"conf.root_dir" or whatever

2. Mixin a module that provides a conf() routine, so that
classes would call conf('root_dir') / etc


Opinions? In the Perl world, I would use Config::Fast and attach a
$self->{conf} hashref to my classes, which all point to a shared object.

Thanks,
Nate
 
P

poopdeville

Nate said:
I'm writing an app in Rails, but some modules need to work outside of
Rails. In these classes, I'd like to have a common way to access
configuration data. Two approaches I though of:

1. Use a Singleton class ala the Logger concept, and have
a "conf" object floating around that can provide the
"conf.root_dir" or whatever

2. Mixin a module that provides a conf() routine, so that
classes would call conf('root_dir') / etc

The first option is most like the Perl solution. It's pretty
straightforward. Something along these lines might work for you,
though it's not a singleton class by design:

http://groups.google.com/group/comp.lang.ruby/msg/aba4124d4d16d6b0
 
J

Joel VanderWerf

Nate said:
I'm writing an app in Rails, but some modules need to work outside of
Rails. In these classes, I'd like to have a common way to access
configuration data. Two approaches I though of:

1. Use a Singleton class ala the Logger concept, and have
a "conf" object floating around that can provide the
"conf.root_dir" or whatever

2. Mixin a module that provides a conf() routine, so that
classes would call conf('root_dir') / etc


Opinions? In the Perl world, I would use Config::Fast and attach a
$self->{conf} hashref to my classes, which all point to a shared object.

This was developed for GUI (specifically FXRuby) apps, but would
probably work with any kind of app:

http://raa.ruby-lang.org/project/preferences/
 
K

khaines

I'm writing an app in Rails, but some modules need to work outside of Rails.
In these classes, I'd like to have a common way to access configuration data.
Two approaches I though of:

1. Use a Singleton class ala the Logger concept, and have
a "conf" object floating around that can provide the
"conf.root_dir" or whatever

2. Mixin a module that provides a conf() routine, so that
classes would call conf('root_dir') / etc

In IOWA apps, there is a method, Iowa.config, that has a reference to the
config object for the application.

This lets that config object be accessed by any code anywhere, similar to
your option #1.


Kirk Haines
 
P

poopdeville

Nate said:
Awesome, that looks great. I think I'll tweak it into a Singleton w/o
the global vars (just method accessors). I'll post a follow-up if I come
up with something semi-portable.

Like the comments in there say, we're deprecating the global vars
usage. It's only in there for backwards compatibility until we weed
them all out and start using the config object everywhere.

'cid 'ooh
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,169
Messages
2,570,915
Members
47,456
Latest member
JavierWalp

Latest Threads

Top