Sha256: c10d7ab5ce5dea738cd6db0298bdac266d074b3d40352afd73e8c1ca4e8a6e69

Contents?: true

Size: 720 Bytes

Versions: 6

Compression:

Stored size: 720 Bytes

Contents

# frozen_string_literal: true

require 'dry/core/class_builder'
require 'rom/factory/factories'

module ROM
  # Main ROM::Factory API
  #
  # @api public
  module Factory
    DEFAULT_NAME = 'Factories'.freeze

    # Configure a new factory
    #
    # @example
    #   MyFactory = ROM::Factory.configure do |config|
    #     config.rom = my_rom_container
    #   end
    #
    # @param [Symbol] name An optional factory class name
    #
    # @return [Class]
    #
    # @api public
    def self.configure(name = DEFAULT_NAME, &block)
      klass = Dry::Core::ClassBuilder.new(name: name, parent: Factories).call do |klass|
        klass.configure(&block)
      end

      klass.new(klass.config.rom)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
rom-factory-0.10.2 lib/rom/factory.rb
rom-factory-0.10.1 lib/rom/factory.rb
rom-factory-0.10.0 lib/rom/factory.rb
rom-factory-0.9.1 lib/rom/factory.rb
rom-factory-0.9.0 lib/rom/factory.rb
rom-factory-0.8.0 lib/rom/factory.rb