Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/baccigalupi/envar


https://github.com/baccigalupi/envar

Last synced: about 1 month ago
JSON representation

Awesome Lists containing this project

README

        

# Envar

Envar is a small shim between the ENV variables which are a pain to
mock, and your app which needs to act differently according to
environments. Under the covers Envar uses the Dotenv gem, which loads
environmental variables from a .env file in your development
environment. Envar does not so much, but it does it in a way that makes
your life much easier!

## Installation

Add this line to your application's Gemfile:

gem 'envar'

And then execute:

$ bundle

Or install it yourself as:

$ gem install envar

## Usage

### With Rails:

Envar was built to just work with Rails. If you are running in a
development or a test environment, Envar will auto-load the .env file.
Those variables will be available on the top level constant:

With the `Rails.env = 'development'` and a .env file like so:

FACEBOOK_TOKEN=fb-for-life-YO

Variables from the .env file will be loaded into the ENV variables
space. Even better, the top level Envar space provides a helpful shim
for accessing these variables so that you don't have to get all angle
brackety.

Envar.facebook_token
# => fb-for-life-YO

# or the uglier uppercase version, if you prefer
Envar.FACEBOOK_TOKEN
# => fb-for-life-YO

This is a lot easier to work with in tests. For example, in rspec it
looks like this:

Envar.stub(:facebook_token).and_return('my_great_token')

In ordinary circumstances you would need to set the ENV variables or
assume in test knowlege about the .env variable. Or worse, stub out the
:[] angle bracket methods. Try not to barf a little in your mouth if you
are in that ugly situation. Instead, be happy with Envar.

For extra configuration stuff, checkout the section below that details
what to do without some Rails.

### Without Rails:

Set the Envar environment by hand:

Envar::Config.environment = 'development' # or whatever

The development and test environment will trigger the loading of the
local .env file. In other environments it is expected that you will have
real environmental variables set.

If you find you would rather set .env files in other environments, you
can configure which environments should load the .env file:

Envar::Config.load_environments = ['development', 'staging']
# => ['development', 'staging']

# or to modify the defaults which are ['development', 'test']

Envar::Config.load_environments << ['staging']
# => ['development', 'test', 'staging']

## Contributing

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