Module: Octopus::Model::InstanceMethods
Class Method Summary
collapse
Instance Method Summary
collapse
#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
85
86
87
88
89
90
|
# File 'lib/octopus/model.rb', line 85
def self.included(base)
base.send(:alias_method, :equality_without_octopus, :==)
base.send(:alias_method, :==, :equality_with_octopus)
base.send(:alias_method, :eql?, :==)
base.send(:alias_method_chain, :perform_validations, :octopus)
end
|
Instance Method Details
#equality_with_octopus(comparison_object) ⇒ Object
110
111
112
|
# File 'lib/octopus/model.rb', line 110
def equality_with_octopus(comparison_object)
equality_without_octopus(comparison_object) && comparison_object.current_shard == current_shard
end
|
114
115
116
117
118
119
120
121
122
|
# File 'lib/octopus/model.rb', line 114
def perform_validations_with_octopus(*args)
if Octopus.enabled? and should_set_current_shard?
Octopus.using(self.current_shard) do
perform_validations_without_octopus(*args)
end
else
perform_validations_without_octopus(*args)
end
end
|
#reload_connection ⇒ Object
105
106
107
108
|
# File 'lib/octopus/model.rb', line 105
def reload_connection()
return unless should_set_current_shard?
self.class.connection_proxy.current_shard = self.current_shard
end
|
#reload_connection_safe(&block) ⇒ Object
96
97
98
99
100
101
102
103
|
# File 'lib/octopus/model.rb', line 96
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
92
93
94
|
# File 'lib/octopus/model.rb', line 92
def should_set_current_shard?
self.respond_to?(:current_shard) && !self.current_shard.nil?
end
|