Sha256: 9baa3dd262b17bcadfc0ae49b0651bd05e2e8a9c40a633342628867f45871718

Contents?: true

Size: 760 Bytes

Versions: 2

Compression:

Stored size: 760 Bytes

Contents

module Econfig
  class Configuration
    def backends
      @backends ||= []
    end

    def get(key)
      backend = backends.find { |backend| backend.get(key) }
      backend.get(key) if backend
    end

    def get!(key)
      get(key) or raise Econfig::NotFound, "configuration key '#{key}' is not set"
    end

    def set(key, value)
      backend = backends.find { |backend| backend.respond_to?(:set) }
      backend.set(key, value) if backend
    end

    def method_missing(name, *args)
      if name.to_s.end_with?("=")
        set(name.to_s.sub(/=$/, ""), args.first)
      elsif name.to_s.end_with?("!")
        get!(name.to_s.sub(/!$/, ""))
      else
        get(name.to_s)
      end
    end

    def respond_to?(*)
      true
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
econfig-0.1.1 lib/econfig/configuration.rb
econfig-0.1.0 lib/econfig/configuration.rb