Sha256: a44ab20316d7dd0e268ae0d590723334674ebcb70c694a6d0737e796082bcdf9

Contents?: true

Size: 953 Bytes

Versions: 6

Compression:

Stored size: 953 Bytes

Contents

module ActiveRecord::Turntable
  class DefaultShard < Shard
    def initialize(klass)
      (klass and original_connection_pool(klass)) or
        raise DefaultShardNotConnected, "connection_pool is nil"
      @klass = klass
      @name  = "master"
    end

    def connection_pool
      if ActiveRecord::Base == @klass
        ActiveRecord::Base.connection_pool
      else
        # use original parent class connection which is turntable disabled
        original_connection_pool
      end
    end

    def support_slave?
      false
    end

    private

      def original_connection_pool(klass = @klass)
        candidate_connection_pool = nil
        until candidate_connection_pool
          if klass == ActiveRecord::Base || !klass.turntable_enabled?
            candidate_connection_pool = klass.connection_pool
          else
            klass = klass.superclass
          end
        end
        candidate_connection_pool
      end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
activerecord-turntable-4.4.1 lib/active_record/turntable/default_shard.rb
activerecord-turntable-4.4.0 lib/active_record/turntable/default_shard.rb
activerecord-turntable-4.3.0 lib/active_record/turntable/default_shard.rb
activerecord-turntable-4.2.0 lib/active_record/turntable/default_shard.rb
activerecord-turntable-4.1.0 lib/active_record/turntable/default_shard.rb
activerecord-turntable-4.0.0 lib/active_record/turntable/default_shard.rb