Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Rails plugin that provides environment specific application configuration.
Ruby
tree: e49426822b

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
tasks
test
CHANGELOG
README.rdoc
Rakefile
VERSION.yml
app_config.gemspec
init.rb
install.rb
uninstall.rb

README.rdoc

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

Something went wrong with that request. Please try again.