Sha256: 78dccdfb718e1aff6d2dd3a762ab074e1cbc2847bb8a4c54357bcc82f0c62c2a
Contents?: true
Size: 1.49 KB
Versions: 1
Compression:
Stored size: 1.49 KB
Contents
# encoding: utf-8 require 'addressable/uri' require 'rom/environment' require 'rom/repository' require 'rom/schema/builder' require 'rom/mapper/builder' module ROM # The environment configures repositories and loads schema with relations # class Environment # Environment builder DSL # class Builder attr_reader :repositories, :relations, :mappers # @api private def self.call(config) repositories = config.each_with_object({}) { |(name, uri), hash| hash[name.to_sym] = Repository.build(name, Addressable::URI.parse(uri)) } new(repositories) end # @api private def initialize(repositories) @repositories = repositories @relations = {} @schema = Schema::Builder.build(repositories) @mappers = Mapper::Builder.new(schema) end # @api private def schema(&block) @schema.call(&block) if block @schema end # @api private def mapping(&block) mappers.call(&block) end # @api private def [](name) relations[name] end # @api private def []=(name, relation) relations[name] = relation end # @api private def finalize mappers.each do |name, mapper| relations[name] = Relation.new(schema[name], mapper) end Environment.new(repositories, schema.finalize, relations, mappers.finalize) end end # Builder end # Environment end # ROM
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
rom-0.2.0 | lib/rom/environment/builder.rb |