ENVied
TL;DR ensure presence and type of your app's ENV-variables.
For applications that are configured via ENV-variables, this gem will provide:
- A fail-fast check for presence of required ENV-variables
- A fail-fast check for type of required ENV-variables
- Access to typed ENV-variables (instead of just strings)
Current status

Usage
1) Configure
Let's configure the ENV-variables we need:
# e.g. config/application.rb
ENVied.configure do |env|
env.variable :force_ssl, :Boolean
env.variable :port, :Integer
end
2) Check for presence and type
ENVied.require!
Excecution will halt unless ENV is something like
{'FORCE_SSL' => 'true', 'PORT' => '3000'}.
A meaningful error will in this case explain what key and type is needed.
3) Use typed variables
Variables accessed via ENVied have the configured type:
ENVied.port # => 1
ENVied.force_ssl # => false
Configuration
Types
The following types are supported:
:String(implied):Boolean(e.g. '0'/'1', 'f'/'t', 'false'/'true', 'off'/'on', 'yes','no' for resp. true or false):Integer:Symbol:Date(e.g. '2014-3-26'):Time(e.g. '14:00')
Defaults
Variables can have defaults. It can be a value or a proc.
ENVied.configure do |env|
env.variable :port, :Integer, default: proc {|env, variable| env.force_ssl ? 443 : 80 }
env.variable :force_ssl, :Boolean, default: true
end
Please remember that ENVied only reads from ENV; don't let setting a default for, say rails_env, give you or your team the impression that ENV['RAILS_ENV'] is set.
Installation
Add this line to your application's Gemfile:
gem 'envied'
And then execute:
$ bundle
Testing
bundle install --binstubs
bin/rspec
# or
bin/rake
Developing
bin/pry --gem
Contributing
- Fork it ( http://github.com/eval/envied/fork )
- Create your feature branch (
git checkout -b my-new-feature) - Commit your changes (
git commit -am 'Add some feature') - Push to the branch (
git push origin my-new-feature) - Create new Pull Request