Sha256: eb08cddc53e6d5ace86bfeb998839f5d94f0711773347ca462e3b512d6ffdbfe

Contents?: true

Size: 1.09 KB

Versions: 22

Compression:

Stored size: 1.09 KB

Contents

module DbCharmer
  @@current_controller = nil
  mattr_accessor :current_controller

  @@forced_slave_reads = false

  def self.force_slave_reads?
    # If global force slave reads is requested, do it
    return @@forced_slave_reads if @@forced_slave_reads

    # If not, try to use current controller to decide on this
    return false unless current_controller.respond_to?(:force_slave_reads?)

    slave_reads = current_controller.force_slave_reads?
    logger.debug("Using controller to figure out if slave reads should be forced: #{slave_reads}")
    return slave_reads
  end

  def self.with_controller(controller)
    raise ArgumentError, "No block given" unless block_given?
    logger.debug("Setting current controller for db_charmer: #{controller.class.name}")
    self.current_controller = controller
    yield
  ensure
    logger.debug('Clearing current controller for db_charmer')
    self.current_controller = nil
  end

  def self.force_slave_reads
    raise ArgumentError, "No block given" unless block_given?
    @@forced_slave_reads = true
    yield
  ensure
    @@forced_slave_reads = false
  end
end

Version data entries

22 entries across 22 versions & 2 rubygems

Version Path
db-charmer-1.8.4 lib/db_charmer/force_slave_reads.rb
db-charmer-1.8.3 lib/db_charmer/force_slave_reads.rb
db-charmer-1.8.2 lib/db_charmer/force_slave_reads.rb
db-charmer-1.8.1 lib/db_charmer/force_slave_reads.rb
db-charmer-1.8.0 lib/db_charmer/force_slave_reads.rb
db-charmer-1.8.0.pre1 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.4.14 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.4.13 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.4.10 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.4.9 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.4.8 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.4.0 lib/db_charmer/force_slave_reads.rb
yam-db-charmer-1.7.01 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.1 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.0 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.0.pre7 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.0.pre6 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.0.pre5 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.0.pre4 lib/db_charmer/force_slave_reads.rb
db-charmer-1.7.0.pre3 lib/db_charmer/force_slave_reads.rb