Module: Octopus::Model::InstanceMethods
Class Method Summary
collapse
Instance Method Summary
collapse
#clean_table_name, #using
Class Method Details
.included(base) ⇒ Object
35
36
37
38
39
40
|
# File 'lib/octopus/model.rb', line 35
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
56
57
58
|
# File 'lib/octopus/model.rb', line 56
def equality_with_octopus(comparison_object)
equality_without_octopus(comparison_object) && comparison_object.current_shard == current_shard
end
|
60
61
62
63
64
65
66
67
68
|
# File 'lib/octopus/model.rb', line 60
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
|
#set_current_shard ⇒ Object
42
43
44
45
46
47
48
49
50
|
# File 'lib/octopus/model.rb', line 42
def set_current_shard
return unless Octopus.enabled?
if new_record? || self.class.connection_proxy.block
self.current_shard = self.class.connection_proxy.current_shard
else
self.current_shard = self.class.connection_proxy.last_current_shard || self.class.connection_proxy.current_shard
end
end
|
#should_set_current_shard? ⇒ Boolean
52
53
54
|
# File 'lib/octopus/model.rb', line 52
def should_set_current_shard?
self.respond_to?(:current_shard) && !self.current_shard.nil?
end
|