Envlogic
Envlogic is a library used to manage environments for your Ruby application in a similar to Rails.env way.
Installation
Add gem to your Gemfile
gem 'envlogic'
Usage
Extend your class or module in which you want to use this library with Envlogic module.
module ExampleModule
extend Envlogic
# code of this module
end
Once you extend your class/module with it, you will have two additional methods (with two aliases):
- .env (.environment) - obtain current env and work with it
- .env= (.environment=) - set your own environment
ExampleModule.env = 'development'
ExampleModule.env.development? # => true
ExampleModule.env.production? # => false
ENV variables key names and default fallbacks
Application root directory env key name
By default gem is looking for ENV variable that is based on your application root directory.
For example, if your application lies in /home/deploy/my_app it will look for MY_APP_ENV variable.
Module/class name based env key name
If there's no env value under the app directory name key, it will fallback to the module/class based env variable name (including the whole namespace chain):
module Basic
module Karafka
extend Envlogic
# code of Karafka module
end
end
ENV['FACEBOOK_API_ENV'] = nil
ENV['BASIC_KARAFKA_ENV'] = 'development'
Basic::Karafka.env.production? # => false
Basic::Karafka.env.development? # => true
Default fallbacks
If there's no other way to determine the environment, Envlogic will fallback to ENV['RACK_ENV'] and if it fails, it will just assume that we're in 'development' mode.
You can also assign the environment directly in Ruby:
module Basic
module Karafka
extend Envlogic
# code of Karafka module
end
end
Basic::Karafka.env = :development
Basic::Karafka.env.production? # => false
Basic::Karafka.env.development? # => true
References
- Karafka framework
- Waterdrop
- Envlogic
- Worker Glass
- Null Logger
- Envlogic Travis CI
- Envlogic Code Climate
Note on Patches/Pull Requests
Fork the project. Make your feature addition or bug fix. Add tests for it. This is important so I don't break it in a future version unintentionally. Commit, do not mess with Rakefile, version, or history. (if you want to have your own version, that is fine but bump version in a commit by itself I can ignore when I pull). Send me a pull request. Bonus points for topic branches.
Each pull request must pass our quality requirements. To check if everything is as it should be, we use PolishGeeks Dev Tools that combine multiple linters and code analyzers. Please run:
bundle exec rake
to check if everything is in order. After that you can submit a pull request.
