Skip to content

Commit

Permalink
tmp with_shard
Browse files Browse the repository at this point in the history
  • Loading branch information
gussan committed Jan 15, 2018
1 parent 587d982 commit 52a230e
Show file tree
Hide file tree
Showing 2 changed files with 14 additions and 19 deletions.
20 changes: 1 addition & 19 deletions lib/active_record/turntable/base.rb
Expand Up @@ -91,25 +91,7 @@ def current_last_shard
turntable_cluster.select_shard(current_sequence_value) if sequencer_enabled?
end

def with_shard(any_shard)
shard = case any_shard
when Numeric
turntable_cluster.shard_for(any_shard)
when ActiveRecord::Base
turntable_cluster.shard_for(any_shard.send(any_shard.turntable_shard_key))
else
shard_or_key
end
connection.with_shard(shard) { yield }
end

def with_slave
connection.with_slave { yield }
end

def with_master
connection.with_master { yield }
end
delegate :with_shard, :with_slave, :with_master, to: :connection
end

delegate :shards_transaction, :turntable_cluster, to: :class
Expand Down
13 changes: 13 additions & 0 deletions spec/active_record/turntable/base_spec.rb
Expand Up @@ -22,4 +22,17 @@
its(:connection) { expect { subject }.not_to raise_error }
end
end

context ".with_shard" do
subject { klass.with_shard(shard, &block) }

let(:klass) { User }
let(:block) {
-> {}
}
let(:shard) { klass.turntable_cluster.shards.first }

context "call with Shard object"
it { expect { subject }.not_to raise_error }
end
end

0 comments on commit 52a230e

Please sign in to comment.