module Appydays::Configurable

Define the configuration for a module or class.

Usage:

include Appydays::Configurable
configurable(:myapp) do
  setting :log_level, 'debug', env: 'LOG_LEVEL'
  setting :app_url, 'http://localhost:3000'
  setting :workers, 4
end

The module or class that extends Configurable will get two singleton methods, `log_level` and `app_url`. The first will be be given a value of `ENV.fetch('LOG_LEVEL', 'debug')`, because the env key is provided.

The second will be given a value of `ENV.fetch('MYAPP_APP_URL', '://localhost:3000')`, because the env key is defaulted.

The second will be given a value of `4.class(ENV.fetch('MYAPP_WORKERS', 4))`. Note it will coerce the type of the env value to the type of the default. Empty strings will be coerced to nil.

The `setting` method has several other options; see its documentation for more details.

The target will also get a `reset_configuration` method that will restore defaults, and `run_after_configured_hooks`. See their docs for more details.

Public Class Methods

included(target) click to toggle source
# File lib/appydays/configurable.rb, line 35
def self.included(target)
  target.extend(ClassMethods)
end