public
Description: Rails plugin that provides environment specific application configuration.
Homepage: http://blog.stochasticbytes.com/2007/10/better-appconfig-plugin-for-rails.html
Clone URL: git://github.com/cjbottaro/app_config.git
name age message
file CHANGELOG Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file README.rdoc Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file Rakefile Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file VERSION.yml Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file app_config.gemspec Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file init.rb Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file install.rb Mon May 19 10:21:21 -0700 2008 moving to git from svn [Christopher J. Bottaro]
directory lib/ Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
directory tasks/ Mon May 19 10:21:21 -0700 2008 moving to git from svn [Christopher J. Bottaro]
directory test/ Wed Jul 01 15:42:31 -0700 2009 Packaged as a gem, mini rewrite, see README.rdo... [cjbottaro]
file uninstall.rb Mon May 19 10:21:21 -0700 2008 moving to git from svn [Christopher J. Bottaro]

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