Sha256: 3097579922414b3978cd150a9a9356c3c686b476a581f4035b4a0910acdb87b0

Contents?: true

Size: 1.11 KB

Versions: 1

Compression:

Stored size: 1.11 KB

Contents

require 'active_record'
require 'slavery/base'
require 'slavery/error'
require 'slavery/slave_connection_holder'
require 'slavery/version'
require 'slavery/active_record/base'
require 'slavery/active_record/relation'

module Slavery
  class << self
    attr_accessor :disabled
    attr_writer :spec_key

    def spec_key
      case @spec_key
      when String   then @spec_key
      when NilClass then @spec_key = "#{ActiveRecord::ConnectionHandling::RAILS_ENV.call}_slave"
      end
    end

    def on_slave(&block)
      Base.new(:slave).run &block
    end

    def on_master(&block)
      Base.new(:master).run &block
    end

    def slave_connection_holder
      @slave_connection_holder ||= begin
        SlaveConnectionHolder.activate
        SlaveConnectionHolder
      end
    end

    def base_transaction_depth
      @base_transaction_depth ||= begin
        testcase = ActiveSupport::TestCase
        if defined?(testcase) &&
            testcase.respond_to?(:use_transactional_fixtures) &&
            testcase.try(:use_transactional_fixtures)
          1
        else
          0
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
slavery-2.0.0 lib/slavery.rb