Sha256: 9c2771ebb1104f59fa18b66e2189901e40e48c55590de4d325b55e6ee8b7c347

Contents?: true

Size: 1.4 KB

Versions: 16

Compression:

Stored size: 1.4 KB

Contents

require 'rom/setup/auto_registration'

module ROM
  class Setup
    # @return [Array] registered relation subclasses
    #
    # @api private
    attr_reader :relation_classes

    # @return [Array] registered mapper subclasses
    #
    # @api private
    attr_reader :mapper_classes

    # @return [Array] registered command subclasses
    #
    # @api private
    attr_reader :command_classes

    # @api private
    def initialize
      @relation_classes = []
      @command_classes = []
      @mapper_classes = []
    end

    # Relation sub-classes are being registered with this method during setup
    #
    # @api private
    def register_relation(*klasses)
      klasses.reduce(@relation_classes, :<<)
    end

    # Mapper sub-classes are being registered with this method during setup
    #
    # @api private
    def register_mapper(*klasses)
      klasses.reduce(@mapper_classes, :<<)
    end

    # Command sub-classes are being registered with this method during setup
    #
    # @api private
    def register_command(*klasses)
      klasses.reduce(@command_classes, :<<)
    end

    def auto_registration(directory, options = {})
      auto_registration = AutoRegistration.new(directory, options)
      auto_registration.relations.map { |r| register_relation(r) }
      auto_registration.commands.map { |r| register_command(r) }
      auto_registration.mappers.map { |r| register_mapper(r) }
    end
  end
end

Version data entries

16 entries across 16 versions & 1 rubygems

Version Path
rom-3.0.3 lib/rom/setup.rb
rom-3.0.2 lib/rom/setup.rb
rom-3.0.1 lib/rom/setup.rb
rom-3.0.0 lib/rom/setup.rb
rom-3.0.0.rc2 lib/rom/setup.rb
rom-3.0.0.rc1 lib/rom/setup.rb
rom-3.0.0.beta3 lib/rom/setup.rb
rom-3.0.0.beta2 lib/rom/setup.rb
rom-3.0.0.beta1 lib/rom/setup.rb
rom-2.0.2 lib/rom/setup.rb
rom-2.0.1 lib/rom/setup.rb
rom-2.0.0 lib/rom/setup.rb
rom-1.0.0 lib/rom/setup.rb
rom-1.0.0.rc1 lib/rom/setup.rb
rom-1.0.0.beta2 lib/rom/setup.rb
rom-1.0.0.beta1 lib/rom/setup.rb