Sha256: c35fdaf70067cb11ae3027822f5b23d8d7ceccca6c37e4b3050c5ccf5b835cfb

Contents?: true

Size: 976 Bytes

Versions: 13

Compression:

Stored size: 976 Bytes

Contents

require_relative 'connection'
require_relative 'configuration'
require 'active_support/core_ext/class/attribute'
require 'active_support/concern'

module ActiveHouse
  module Connecting
    extend ActiveSupport::Concern

    included do
      class_attribute :_connection_class, instance_accessor: false
      class_attribute :_connection, instance_accessor: false
      self._connection_class = ActiveHouse::Connection
    end

    class_methods do
      def ensure_connection
        establish_connection if _connection.nil?
      end

      def establish_connection(name_or_config = nil)
        config = if name_or_config.is_a?(Hash)
                   name_or_config.symbolize_keys
                 else
                   ActiveHouse.configuration.connection_config_for(name_or_config)
                 end
        self._connection = _connection_class.new(config)
      end

      def connection
        ensure_connection
        _connection
      end
    end
  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
active_house-0.4.0 lib/active_house/connecting.rb
active_house-0.3.2 lib/active_house/connecting.rb
active_house-0.3.1 lib/active_house/connecting.rb
active_house-0.3.0 lib/active_house/connecting.rb
active_house-0.2.2 lib/active_house/connecting.rb
active_house-0.2.1 lib/active_house/connecting.rb
active_house-0.2.0 lib/active_house/connecting.rb
active_house-0.1.5 lib/active_house/connecting.rb
active_house-0.1.4 lib/active_house/connecting.rb
active_house-0.1.3 lib/active_house/connecting.rb
active_house-0.1.2 lib/active_house/connecting.rb
active_house-0.1.1 lib/active_house/connecting.rb
active_house-0.1.0 lib/active_house/connecting.rb