module Octopus::Model::ClassMethods
Attributes
custom_octopus_table_name[RW]
Public Class Methods
extended(base)
click to toggle source
# File lib/octopus/model.rb, line 90 def self.extended(base) base.class_attribute(:replicated) base.class_attribute(:sharded) base.class_attribute(:allowed_shards) base.hijack_methods end
table_name=(value = nil)
click to toggle source
Calls superclass method
# File lib/octopus/model.rb, line 135 def table_name=(value = nil) self.custom_octopus_table_name = true super end
Public Instance Methods
allow_shard(*shards)
click to toggle source
# File lib/octopus/model.rb, line 105 def allow_shard(*shards) self.allowed_shards ||= [] self.allowed_shards += shards end
allowed_shard?(shard)
click to toggle source
# File lib/octopus/model.rb, line 156 def allowed_shard?(shard) if custom_octopus_connection allowed_shards && shard && (allowed_shards.include?(shard.to_s) || allowed_shards.include?(shard.to_sym)) else true end end
clear_active_connections_with_octopus!()
click to toggle source
# File lib/octopus/model.rb, line 181 def clear_active_connections_with_octopus! if should_use_normal_connection? clear_active_connections_without_octopus! else connection_proxy.clear_active_connections! end end
clear_all_connections_with_octopus!()
click to toggle source
# File lib/octopus/model.rb, line 189 def clear_all_connections_with_octopus! if should_use_normal_connection? clear_all_connections_without_octopus! else connection_proxy.clear_all_connections! end end
connected_with_octopus?()
click to toggle source
# File lib/octopus/model.rb, line 197 def connected_with_octopus? if should_use_normal_connection? connected_without_octopus? else connection_proxy.connected? end end
connection_pool_with_octopus()
click to toggle source
# File lib/octopus/model.rb, line 173 def connection_pool_with_octopus if should_use_normal_connection? connection_pool_without_octopus else connection_proxy.connection_pool end end
connection_proxy()
click to toggle source
# File lib/octopus/model.rb, line 142 def connection_proxy ActiveRecord::Base.class_variable_defined?(:@@connection_proxy) && ActiveRecord::Base.class_variable_get(:@@connection_proxy) || ActiveRecord::Base.class_variable_set(:@@connection_proxy, Octopus::Proxy.new) end
connection_with_octopus()
click to toggle source
# File lib/octopus/model.rb, line 164 def connection_with_octopus if should_use_normal_connection? connection_without_octopus else connection_proxy.current_model = self connection_proxy end end
hijack_methods()
click to toggle source
# File lib/octopus/model.rb, line 110 def hijack_methods after_initialize :set_current_shard around_save :run_on_shard, :unless => lambda { self.class.custom_octopus_connection } class_attribute :custom_octopus_connection class << self attr_accessor :custom_octopus_table_name alias_method :connection_without_octopus, :connection alias_method :connection, :connection_with_octopus alias_method :connection_pool_without_octopus, :connection_pool alias_method :connection_pool, :connection_pool_with_octopus alias_method :clear_all_connections_without_octopus!, :clear_all_connections! alias_method :clear_all_connections!, :clear_all_connections_with_octopus! alias_method :clear_active_connections_without_octopus!, :clear_active_connections! alias_method :clear_active_connections!, :clear_active_connections_with_octopus! alias_method :connected_without_octopus?, :connected? alias_method :connected?, :connected_with_octopus? def table_name=(value = nil) self.custom_octopus_table_name = true super end end end
octopus_establish_connection(spec = ENV['DATABASE_URL'])
click to toggle source
# File lib/octopus/model.rb, line 210 def octopus_establish_connection(spec = ENV['DATABASE_URL']) self.custom_octopus_connection = true if spec establish_connection(spec) end
octopus_set_table_name(value = nil)
click to toggle source
# File lib/octopus/model.rb, line 215 def octopus_set_table_name(value = nil) ActiveSupport::Deprecation.warn 'Calling `octopus_set_table_name` is deprecated and will be removed in Octopus 1.0.', caller set_table_name(value) end
replicated_model()
click to toggle source
# File lib/octopus/model.rb, line 97 def replicated_model self.replicated = true end
set_table_name_with_octopus(value = nil, &block)
click to toggle source
# File lib/octopus/model.rb, line 205 def set_table_name_with_octopus(value = nil, &block) self.custom_octopus_table_name = true set_table_name_without_octopus(value, &block) end
sharded_model()
click to toggle source
# File lib/octopus/model.rb, line 101 def sharded_model self.sharded = true end
should_use_normal_connection?()
click to toggle source
# File lib/octopus/model.rb, line 148 def should_use_normal_connection? if !Octopus.enabled? true elsif custom_octopus_connection !connection_proxy.block || !allowed_shard?(connection_proxy.current_shard) end end