No release in over a year
Chamber lets you source your Settings from an arbitrary number of YAML files and provides a simple mechanism for overriding settings from the ENV, which is friendly to how Heroku addons work.
2005
2006
2007
2008
2009
2010
2011
2012
2013
2014
2015
2016
2017
2018
2019
2020
2021
2022
2023
2024
 Dependencies

Development

Runtime

>= 0.20.3, < 2.0
 Project Readme

Chamber


Chamber is the auto-encrypting, extremely organizable, Heroku-loving, CLI-having, non-extra-repo-needing, non-Rails-specific-ing, CI-serving configuration management library.

We looked at all of the options out there and thought something was still missing, so we wrote Chamber. We made it with lots of ❤ and we hope you like it as much as we do.

What Sets Chamber Apart

For an idea of how Chamber compares to other popular libraries, check out our Gem Comparison.

Basic Usage

Before starting this guide, make sure you install chamber.

Once your app is initialized, you should have a settings.yml file somewhere. A lot of times it's the root of your project and sometimes it's in a framework specific location.

Inside of here you can define any settings you'd like like so:

# settings.yml

smtp_username: 'my_username'
smtp_password: 'my_password'

From there you can access your settings by using the special Chamber.dig constant.

Chamber.dig('smtp_password')
# => 'my_password'

If you want to encrypt a setting, prefix the setting name with _secure_ like so:

# settings.yml

smtp_username:         'my_username'
_secure_smtp_password: 'my_password'

And then run chamber secure. Your settings file will have an encrypted value:

# settings.yml

smtp_username:         'my_username'
_secure_smtp_password: JL5hAVux4tERpv49QPWxy9H0VC2Rnk7V8/e8+1XOwPcXcoH/a7Lh253UY/v9m8nI/Onb+ZG9nZ082J4M/BmLa+f7jwMEwufIqbUhUah9eKIW8xcxlppBYpl7JVGf2HJF5TfCN44gMQNgGNzboCQXKqRyeGFm4u772Sg9V2gEx/q7qJ6F4jg7v/cltCFLmJfXA2SHA5Dai4p9L4IvMVVJGm34k5j7KOegNqpVWs2RY99cagjPuzc9VM2XSUsXgqcUJdmH8YtPW8Kqkyg0oYlRh6VQWABlWXwTZz74QjTTjqtqfoELIoFTMBDh+cCvuUTAE5m06LhlqauVrB4UnBsd5g==

which you still access the same way because Chamber handles the decryption for you:

Chamber.dig('smtp_password')
# => 'my_password'

Full Reference

There's so much to Chamber, we couldn't put it all in the README. For the full Chamber guide, visit the wiki.

Credits

Chamber was written by Jeff Felchner and Mark McEahern

The Kompanee

Chamber is maintained and funded by The Kompanee, Ltd.

The names and logos for The Kompanee are trademarks of The Kompanee, Ltd.

License

Chamber is Copyright © 2014-2023 Jeff Felchner and Mark McEahern. It is free software, and may be redistributed under the terms specified in the LICENSE file.