module ActiveRecordShards::Model

Attributes

sharded[RW]

Public Class Methods

extended(base) click to toggle source
# File lib/active_record_shards/model.rb, line 65
def self.extended(base)
  base.send(:include, InstanceMethods)
  base.after_initialize :initialize_shard_and_replica
end

Public Instance Methods

is_sharded?() click to toggle source
# File lib/active_record_shards/model.rb, line 13
def is_sharded? # rubocop:disable Naming/PredicateName
  if self == ActiveRecord::Base
    sharded != false && supports_sharding?
  elsif self == base_class
    if sharded.nil?
      ActiveRecord::Base.is_sharded?
    else
      sharded != false
    end
  else
    base_class.is_sharded?
  end
end
not_sharded() click to toggle source
# File lib/active_record_shards/model.rb, line 5
def not_sharded
  if self != ActiveRecord::Base && self != base_class
    raise "You should only call not_sharded on direct descendants of ActiveRecord::Base"
  end

  self.sharded = false
end
on_replica_by_default=(value) click to toggle source
# File lib/active_record_shards/model.rb, line 39
def on_replica_by_default=(value)
  if self == ActiveRecord::Base
    raise ArgumentError, "Cannot set on_replica_by_default on ActiveRecord::Base"
  else
    base_class.instance_variable_set(:@on_replica_by_default, value)
  end
end
Also aliased as: on_slave_by_default=
on_replica_by_default?() click to toggle source
# File lib/active_record_shards/model.rb, line 27
def on_replica_by_default?
  if self == ActiveRecord::Base
    false
  else
    base = base_class
    if base.instance_variable_defined?(:@on_replica_by_default)
      base.instance_variable_get(:@on_replica_by_default)
    end
  end
end
Also aliased as: on_slave_by_default?
on_slave_by_default=(value)
on_slave_by_default?()