== Summary Application level configuration. == Features * simple YAML config files * config files support ERB * config files support inheritance * access config information via convenient object member notation === Basic Usage You simply write a configuration file in YAML. Notice you can use ERB. config.yml aws: access_key: 123ABC secret_key: ABC123 now: <%= Time.now %> servers: [ {name: example1.com}, {name: example2.com} ] Then somewhere in your code, you create a global constant from the config file. Then access the config data via object member notation. _code_ ::AppConfig = ApplicationConfiguration.new("config.yml") AppConfig.aws.access_key # => "123ABC" AppConfig.aws.secret_key # => "ABC123" AppConfig.now # => Tue May 05 21:55:15 -0500 2009 AppConfig.servers[0].name # => "example1.com" === Inheritance You can have a second config file that is recursively merged with the first config file. base.yml app_name: MyCoolApp domain: dev.mycoolapp.com production.yml domain: www.mycoolapp.com _code_ ::AppConfig = ApplicationConfiguration.new("base.yml", "production.yml") AppConfig.app_name # => "MyCoolApp" AppConfig.domain # => "www.mycoolapp.com" === Using in a Rails app You just need to create an initializer that looks something like this. require 'app_config' ::AppConfig = ApplicationConfiguration.new(RAILS_ROOT+"/config/app_config.yml", RAILS_ROOT+"/config/environments/#{RAILS_ENV}.yml") If you installed this as a Rails plugin instead of a gem, that code is already run for you in the plugin's init.rb. == Author Christopher J. Bottaro