Class: CConfig::Config
- Inherits:
-
Object
- Object
- CConfig::Config
- Includes:
- HashUtils
- Defined in:
- lib/cconfig/cconfig.rb
Overview
Config is the main class of this library. It allows you to fetch the current configuration (after merging the values from all sources) as a hash. This has will have some specials methods: ‘::CConfig::HashUtils::Extensions#enabled?`, `::CConfig::HashUtils::Extensions#disabled?` and `::CConfig::HashUtils::Extensions#default_of`.
Instance Method Summary collapse
-
#fetch ⇒ Object
Returns a hash with the app configuration contained in it.
-
#initialize(default:, local:, prefix:) ⇒ Config
constructor
Instantiate an object with ‘default` as the path to the default configuration, `local` as the alternate file, and `prefix` as the prefix for environment variables.
-
#to_s ⇒ Object
Returns a string representation of the evaluated configuration.
Constructor Details
#initialize(default:, local:, prefix:) ⇒ Config
Instantiate an object with ‘default` as the path to the default configuration, `local` as the alternate file, and `prefix` as the prefix for environment variables. The `prefix` will take “cconfig” as the default.
Note: the ‘local` value will be discarded in favor of the `#prefix_LOCAL_CONFIG_PATH` environment variable if it was set.
38 39 40 41 42 |
# File 'lib/cconfig/cconfig.rb', line 38 def initialize(default:, local:, prefix:) @default = default @prefix = prefix || 'cconfig' @local = ENV.fetch("#{@prefix.upcase}_LOCAL_CONFIG_PATH") { local } end |
Instance Method Details
#fetch ⇒ Object
Returns a hash with the app configuration contained in it.
45 46 47 48 49 50 51 52 53 |
# File 'lib/cconfig/cconfig.rb', line 45 def fetch cfg = File.file?(@default) ? YAML.load_file(@default) : {} local = fetch_local hsh = strict_merge_with_env(default: cfg, local: local, prefix: @prefix) hsh.extend(::CConfig::HashUtils::Extensions) hsh.defaults = cfg hsh end |
#to_s ⇒ Object
Returns a string representation of the evaluated configuration.
56 57 58 |
# File 'lib/cconfig/cconfig.rb', line 56 def to_s hide_password(fetch.dup).to_yaml end |