Simple configuration framework for Rails applications based on YAML files
Ruby JavaScript
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
lib
script
spec
.gitignore
.rspec
CHANGELOG
Gemfile
MIT-LICENSE
README.rdoc
Rakefile
VERSION
amberbit-config.gemspec

README.rdoc

AmberBit Config

Provides simple global configuration for ruby applications using YAML files.

Installation:

With bundler:


1. Edit Gemfile, located in your application and add the following line:
    gem 'amberbit-config'
2. Run bundle:
    bundle install
3. Use rake to generate configuration files:
    rake amberbit:config:setup
4. Make sure that ./config/app_config.yml stays in .gitignore

As a rails engine:


It will work without any other actions as a rails engine. It takes environment name from:

ENV['RAILS_ENV'] or ENV['RACK_ENV'] or ENV['APP_CONFIG_ENV']

AppConfig should be initialized before environment configuration. If you need to use it within ./config/application.rb then add after Bundler.require

require 'amberbit-config'
AmberbitConfig.initialize_within File.dirname(__FILE__)

Any ruby application


For any other app require and initialize AppConfig as above, just make sure that there's an ENV variable. You can also specify files to load, i.e.:

require 'amberbit-config'
ENV['RACK_ENV'] = 'development'
AmberbitConfig.initialize 'config/app_config_default.yml', 'config/app_config.yml'

Tested with Ruby on Rails, Sinatra, and plain old ruby.

Usage:

Place your application configuration default values into ./config/app_config_default.yml:

default:
  application:
    name: SuperApp
    url: http://localhost:3000/

test:
  # overwrite application.url key only in test env
  application:
    url: http://testhost:3000/

And overwrite values you wish on per-installation basis in ./config/app_config.yml:

default:
  application:
    name: SuperApp specially for you

production:
  application:
    url: http://yoursuperhiperdomain.com

In your application Ruby code you can access the values in 2 following ways:

AppConfig["application"]["name"] #=> SuperApp specially for you

or

AppConfig.application.name #=> SuperApp specially for you

Keys are deep-merged, for example:

production env:

AppConfig.application.name #=> SuperApp specially for you
AppConfig.application.url #=> http://yoursuperhiperdomain.com

development env:

AppConfig.application.name #=> SuperApp specially for you
AppConfig.application.url #=> http://localhost:3000/

Copyright © 2008/2011 Wojciech Piekutowski, Hubert Łępicki, Piotr Tynecki released under the MIT license