Module: Octopus::Model::InstanceMethods
Class Method Summary
collapse
Instance Method Summary
collapse
#clean_table_name, #using
Class Method Details
.included(base) ⇒ Object
36
37
38
39
40
41
|
# File 'lib/octopus/model.rb', line 36
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
57
58
59
|
# File 'lib/octopus/model.rb', line 57
def equality_with_octopus(comparison_object)
equality_without_octopus(comparison_object) && comparison_object.current_shard == current_shard
end
|
61
62
63
64
65
66
67
68
69
|
# File 'lib/octopus/model.rb', line 61
def perform_validations_with_octopus(*args)
if Octopus.enabled? && should_set_current_shard?
Octopus.using(current_shard) do
perform_validations_without_octopus(*args)
end
else
perform_validations_without_octopus(*args)
end
end
|
#set_current_shard ⇒ Object
43
44
45
46
47
48
49
50
51
|
# File 'lib/octopus/model.rb', line 43
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
53
54
55
|
# File 'lib/octopus/model.rb', line 53
def should_set_current_shard?
self.respond_to?(:current_shard) && !current_shard.nil?
end
|