sugarfree-config
Configuration handling the easy way.
sugarfree-config allows easy access to per environment config values stored in a YAML file in Rails and non Rails applications.
Installation
Just install the gem manually from rubygems.org or add it to your bundle.
$ gem install sugarfree-config
Usage
Configuration can be accessed using method calls:
SugarfreeConfig.a.b.c #=> 'value'
which will expect a config.yml file like the one below (given development env) stored in the config folder (in Rails apps) or the root folder (in non Rails apps):
development:
a:
b:
c: 'value'
If asking for akey that does not exists ConfigKeyException will be raised.
A convinience to_hash method is also provided:
SugarfreeConfig.a.to_hash #=> { 'b' => { 'c' => 'value' } }
Configuration
sugarfree-config can be used with or without Rails. Default configurations are provided for each case. Default configurations can be overriden the explicit use of the SugarfreeConfig::init method.
To set the configuration you need to initialize the SugarfreeConfig class:
SugarfreeConfig.init :env => 'development', :file => 'my_config.yml', :reload => true
# Default options in Rails apps
SugarfreeConfig.init({
:env => Rails.env,
:file => Rails.root.join('config', 'config.yml'),
:reload => Rails.env.development?
})
# Default options in non Rails apps
SugarfreeConfig.init({
:env => 'development',
:file => File.('config.yml'),
:reload => false
})
Gotchas
Configuration is accessed through a ConfigIterator class which (as its name says) is an iterator and cannot be reused. However there is a workaround to allow the repeated use of scoped iterators.
# This doesn't work
var a_config = SugarfreeConfig.a
a_config.b.c #=> 'value'
a_config.b.c #=> Ups!!! tried to grab config.a.b.c.b.c
# Workaround
var a_config = SugarfreeConfig.a
a_config.dup.b.c #=> 'value'
a_config.dup.b.c #=> 'value'
Compatibility
SugarfreeConfig 2.0.0 has been developed and tested against Ruby 1.9.2 and Rails 3.x. Older versions of Ruby and Rails may also work. Just give it a try ;)
Contact
Please use GitHub (github.com/davidbarral/sugarfree-config) to report bugs, make suggestions or send patches.