thekompanee / chamber

A surprisingly configurable convention-based approach to managing your application's custom configuration settings.
https://github.com/thekompanee/chamber
MIT License
201 stars 25 forks source link

Chamber

RubyGems Version RubyGems Rank Overall RubyGems Rank Daily RubyGems Downloads Build Status Maintainability


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.