module DbCharmer::ActiveRecord::Sharding
Public Class Methods
extended(model)
click to toggle source
# File lib/db_charmer/active_record/sharding.rb, line 5 def self.extended(model) model.cattr_accessor(:sharded_connection) end
Public Instance Methods
on_default_shard(proxy_target = nil, &block)
click to toggle source
Run on default shard (if supported by the sharding method)
# File lib/db_charmer/active_record/sharding.rb, line 16 def on_default_shard(proxy_target = nil, &block) raise ArgumentError, "No sharded connection configured!" unless sharded_connection if sharded_connection.support_default_shard? shard_for(:default, proxy_target, &block) else raise ArgumentError, "This model's sharding method does not support default shard" end end
on_each_shard(proxy_target = nil, &block)
click to toggle source
Enumerate shards
# File lib/db_charmer/active_record/sharding.rb, line 27 def on_each_shard(proxy_target = nil, &block) raise ArgumentError, "No sharded connection configured!" unless sharded_connection conns = sharded_connection.shard_connections raise ArgumentError, "This model's sharding method does not support shards enumeration" unless conns conns.each do |conn| on_db(conn, proxy_target, &block) end end
shard_for(key, proxy_target = nil, &block)
click to toggle source
# File lib/db_charmer/active_record/sharding.rb, line 9 def shard_for(key, proxy_target = nil, &block) raise ArgumentError, "No sharded connection configured!" unless sharded_connection conn = sharded_connection.sharder.shard_for_key(key) on_db(conn, proxy_target, &block) end