Sha256: 0c485abe9cabbeef0c240a9c152d2993abe5922744421d92e4a593ebb1d031da
Contents?: true
Size: 1 KB
Versions: 7
Compression:
Stored size: 1 KB
Contents
class Octopus::ScopeProxy attr_accessor :shard, :klass def initialize(shard, klass) @shard = shard @klass = klass end def using(shard) raise "Nonexistent Shard Name: #{shard}" if @klass.connection.instance_variable_get(:@shards)[shard].nil? @shard = shard return self end # Transaction Method send all queries to a specified shard. def transaction(options = {}, &block) @klass.connection.run_queries_on_shard(@shard) do @klass = @klass.connection().transaction(options, &block) end end def connection @klass.connection().current_shard = @shard @klass.connection() end def method_missing(method, *args, &block) @klass.connection.run_queries_on_shard(@shard) do @klass = @klass.send(method, *args, &block) end return @klass if @klass.is_a?(ActiveRecord::Base) or @klass.is_a?(Array) or @klass.is_a?(Fixnum) or @klass.nil? return self end def ==(other) @shard == other.shard @klass == other.klass end end
Version data entries
7 entries across 7 versions & 1 rubygems