0.0
No commit activity in last 3 years
No release in over 3 years
Store Ruby or Rails app settings in the easiest way.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies
 Project Readme

EasyConfig

A simple gem to store custom app settings the easiest way. It can be used in any Ruby application (Rails included).

Installation

Add this line to your application's Gemfile:

gem 'easy_configs'

then execute:

$ bundle install

or install it yourself as:

$ gem install easy_configs

Usage

EasyConfig loads a YAML file (with eventual ERB tags, so you can use ENV variables). For example, given a YAML file with a bunch of keys:

foo:
  bar: 1
  env: <%= ENV['USER'] %>
  baz:
    nested: 2

Here's how to use it:

# Load yaml file
MyConfig = EasyConfig.load_yaml 'path_to_yaml.yml'

# Retrieve keys
MyConfig.bar # => 1
MyConfig.env # => YOUR_USERNAME

# Retuns a nested object (EasyConfig::DeepStruct is a modified version of Ruby's OpenStruct)
MyConfig.baz # => <#EasyConfig::DeepStruct>

# Access a nested key
MyConfig.baz.nested # => 2

# Returns an Hash
MyConfig.to_h # => {foo: {bar: 1, env: ..., baz: {nested: 2} }}

Rails support

EasyConfig has built-in support for Rails. It provides a generator to create an initializer and a sample config:

  • run the generator

    rails generate easy_config:install

  • edit the sample configuration in config/easy_config.yml

You might want to modify config/initializers/easy_config.rb to choose another name for the object that should store the settings. (default name is EConfig), or add additional logic. No problem, this is just a decent default for the lazy.

Contributing

  1. Fork it!
  2. Create your feature branch (git checkout -b my-new-feature)
  3. Commit your changes (git commit -am 'Added some feature')
  4. Push to the branch (git push origin my-new-feature)
  5. Create new Pull Request

Testing

  • clone this repo
  • run bundle install
  • run rake spec

License

Copyright (c) 2013 Andrea Pavoni http://andreapavoni.com