Module: Octopus::Model::InstanceMethods

Includes:
SharedMethods
Defined in:
lib/octopus/model.rb

Class Method Summary collapse

Instance Method Summary collapse

Methods included from SharedMethods

#clean_table_name, connection_pool_with_octopus, connection_proxy, connection_with_octopus, #hijack_connection, #hijack_initializer, #set_current_shard, should_use_normal_connection?, #using

Class Method Details

.included(base) ⇒ Object



93
94
95
96
97
# File 'lib/octopus/model.rb', line 93

def self.included(base)
  base.send(:alias_method, :equality_without_octopus, :==)
  base.send(:alias_method, :==, :equality_with_octopus)
  base.send(:alias_method, :eql?, :==)
end

Instance Method Details

#equality_with_octopus(comparison_object) ⇒ Object



117
118
119
# File 'lib/octopus/model.rb', line 117

def equality_with_octopus(comparison_object)
  equality_without_octopus(comparison_object) && comparison_object.current_shard == current_shard
end

#reload_connectionObject



112
113
114
115
# File 'lib/octopus/model.rb', line 112

def reload_connection()
  return unless should_set_current_shard?
  self.class.connection_proxy.current_shard = self.current_shard
end

#reload_connection_safe(&block) ⇒ Object



103
104
105
106
107
108
109
110
# File 'lib/octopus/model.rb', line 103

def reload_connection_safe(&block)
  return yield unless should_set_current_shard?
  original = self.class.connection_proxy.current_shard
  self.class.connection_proxy.current_shard = self.current_shard
  result = yield
  self.class.connection_proxy.current_shard = original
  result
end

#should_set_current_shard?Boolean

Returns:

  • (Boolean)


99
100
101
# File 'lib/octopus/model.rb', line 99

def should_set_current_shard?
  self.respond_to?(:current_shard) && !self.current_shard.nil?
end