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.expand_path('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.