Sha256: 3bd531fb5bf23f4580d38272bcaab364b69990138bbbda0745d2ec4372f5c8b1

Contents?: true

Size: 913 Bytes

Versions: 2

Compression:

Stored size: 913 Bytes

Contents

# frozen_string_literal: true

require 'clowne/version'
require 'clowne/declarations'
require 'clowne/cloner'

require 'clowne/adapters/base'

# Declarative models cloning
module Clowne
  # List of built-in adapters
  ADAPTERS = {
    base:          'Base',
    active_record: 'ActiveRecord'
  }.freeze

  class << self
    attr_reader :default_adapter, :raise_on_override

    # Set default adapters for all cloners
    def default_adapter=(adapter)
      @default_adapter = resolve_adapter(adapter)
    end

    def resolve_adapter(adapter)
      if adapter.is_a?(Class)
        adapter.new
      elsif adapter.is_a?(Symbol)
        adapter_class = ADAPTERS[adapter]
        raise "Unknown adapter: #{adapter}" if adapter_class.nil?
        Clowne::Adapters.const_get(adapter_class).new
      else
        adapter
      end
    end
  end
end

require 'clowne/adapters/active_record' if defined?(::ActiveRecord)

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
clowne-0.1.0.beta1 lib/clowne.rb
clowne-0.1.0.pre1 lib/clowne.rb