Sha256: 66b19763dfc6f8476c8fedc1ab4c310d4ec726864843af04c80b0ed161969840

Contents?: true

Size: 974 Bytes

Versions: 1

Compression:

Stored size: 974 Bytes

Contents

module ROM

  # Exposes defined repositories, schema, relations and mappers
  #
  # @api public
  class Env
    include Adamantium::Flat
    include Equalizer.new(:repositories, :schema, :relations, :mappers)

    attr_reader :repositories, :schema, :relations, :mappers

    # @api private
    def initialize(repositories, schema, relations, mappers)
      @repositories = repositories
      @schema = schema
      @relations = relations
      @mappers = mappers
    end

    # Returns a reader with access to defined mappers
    #
    # @example
    #
    #   rom.read(:users).adults.to_a
    #
    # @api public
    def read(name)
      mappers[name]
    end

    # @api private
    def [](name)
      repositories.fetch(name)
    end

    # @api private
    def respond_to_missing?(name, include_private = false)
      repositories.key?(name)
    end

    private

    # @api private
    def method_missing(name, *args)
      repositories.fetch(name)
    end
  end

end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
rom-0.3.1 lib/rom/env.rb