Sha256: 60000c4e5586816664d03cf3a5d2e787ef28fb8645c8fa8c8445399d3ad55c97

Contents?: true

Size: 1.1 KB

Versions: 1

Compression:

Stored size: 1.1 KB

Contents

require 'active_support/deprecation'
require 'active_support/core_ext/hash/keys'

module FreshConnection
  class ConnectionFactory
    def initialize(group, modify_spec = {})
      @group = group.to_sym
      @modify_spec = modify_spec.symbolize_keys
    end

    def new_connection
      ActiveRecord::Base.__send__(adapter_method, spec)
    end

    private

    def adapter_method
      @adapter_method ||= ar_spec.adapter_method
    end

    def spec
      @spec ||= build_spec
    end

    def build_spec
      config = ar_spec.config.symbolize_keys
      group_config = config[@group]

      # provide backward compatibility for older :slave usage
      if !group_config && @group == :replica && config.key?(:slave)
        ActiveSupport::Deprecation.warn(
          "'slave' in database.yml is deprecated and will ignored from version 2.4.0. use 'replica' insted."
        )
        group_config = config[:slave]
      end

      group_config = (group_config || {}).symbolize_keys

      config.merge(group_config).merge(@modify_spec)
    end

    def ar_spec
      ActiveRecord::Base.connection_pool.spec
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
fresh_connection-2.3.0 lib/fresh_connection/connection_factory.rb