Sha256: 7051efe08de6f655cae2f7f4e24d15ac824cb06d8d51fb98aa4fe533af8b2cb1
Contents?: true
Size: 1.23 KB
Versions: 1
Compression:
Stored size: 1.23 KB
Contents
module Econfig class Configuration attr_accessor :default_write_backend def backends @backends ||= BackendCollection.new end def fetch(key) key = key.to_s backend = backends.backend_for(key) if backend backend.get(key) else raise Econfig::NotFound, "configuration key '#{key}' is not set" end end def [](key) key = key.to_s backend = backends.backend_for(key) backend.get(key) if backend end def []=(backend_name = default_write_backend, key, value) raise ArgumentError, "no backend given" unless backend_name if backend = backends[backend_name] backend.set(key.to_s, value) else raise KeyError, "#{backend_name} is not set" end end def method_missing(name, *args) if respond_to?(name) raise ArgumentError, "too many arguments (#{args.length} for 0)" if args.length > 0 if ::ENV["ECONFIG_PERMISSIVE"].to_s.empty? fetch(name) else self[name] end else super end end def respond_to_missing?(name, *) name = name.to_s not(name.end_with?("=") or name.end_with?("!") or name.end_with?("?")) end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
econfig-2.0.0 | lib/econfig/configuration.rb |