h1. YAML2ENV "!https://secure.travis-ci.org/merchii/yaml2env.png!":http://travis-ci.org/merchii/yaml2env _Stash environment-specific configs in YAML-files and load them into ENV according to best-practices pattern - and auto-detects on-initialization if something is missing (skipping the "scratching the head"-part)._ h2. Motivation For some rainy day...or next commit. h2. Frameworks @Yaml2env@ detects lean defaults for: *"Rack":https://github.com/rack/rack*, *"Rails":https://github.com/rails/rails*, and *"Sinatra":https://github.com/sinatra/sinatra*. Though by setting @Yaml2env.env@ and @Yaml2env.root@ manually you are good with any Ruby-project. h2. Installation Add to your @Gemfile@:
gem 'yaml2env'...and @bundle install@. h2. Usage To give this some context; this is how we use @Yaml2Env@ to initialize "Hoptoad":http://hoptoadapp.com:
Yaml2Env.load 'config/hoptoad.yml', {'HOPTOAD_API_KEY' => 'api_key'} if defined?(HoptoadNotifier) HoptoadNotifier.configure do |config| config.api_key = ENV['HOPTOAD_API_KEY'] end end...and the corresponding YAML config file:
development: api_key: NONE staging: api_key: 123abc production: api_key: abc123 test: api_key: NONE...which will yield:
Rails.env = 'development' ENV['HOPTOAD_API_KEY'] => 'NONE' Rails.env = 'staging' ENV['HOPTOAD_API_KEY'] => '123abc' Rails.env = 'production' ENV['HOPTOAD_API_KEY'] => 'abc123' Rails.env = 'test' ENV['HOPTOAD_API_KEY'] => 'NONE' Rails.env = 'other' => "Failed to load required config for environment 'other': /Users/grimen/development/example.com/config/hoptoad.yml"h2. Notes This gem was developed for our own requirements at *"Merchii":http://github.com/merchii*, so feel free to send pull-requests with enhancements of any kind (features, bug-fixes, documentation, tests, etc.) to make it better or useful for you as well. h2. License Released under the MIT license. Copyright (c) "Merchii":http://github.com/merchii, "Jonas Grimfelt":http://github.com/grimen