Module: Octopus::Model::InstanceMethods
Class Method Summary
collapse
Instance Method Summary
collapse
#clean_table_name, #using
Class Method Details
.included(base) ⇒ Object
44
45
46
47
48
49
|
# File 'lib/octopus/model.rb', line 44
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
67
68
69
|
# File 'lib/octopus/model.rb', line 67
def equality_with_octopus(comparison_object)
equality_without_octopus(comparison_object) && comparison_object.current_shard.to_s == current_shard.to_s
end
|
71
72
73
74
75
76
77
78
79
|
# File 'lib/octopus/model.rb', line 71
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
51
52
53
54
55
56
57
58
59
60
61
|
# File 'lib/octopus/model.rb', line 51
def set_current_shard
return unless Octopus.enabled?
if new_record? || self.class.connection_proxy.block
shard = self.class.connection_proxy.current_shard
else
shard = self.class.connection_proxy.last_current_shard || self.class.connection_proxy.current_shard
end
self.current_shard = shard if self.class.allowed_shard?(shard)
end
|
#should_set_current_shard? ⇒ Boolean
63
64
65
|
# File 'lib/octopus/model.rb', line 63
def should_set_current_shard?
self.respond_to?(:current_shard) && !current_shard.nil?
end
|