Rails 在遍历所有分片时,使用 Octopus 获取分片名称

Rails while iterating through all the shards, get the shard name using Octopus

设置: 我有多个相同模式的数据库。每个数据库代表不同站点的数据。我想遍历每个实例并打印出用户数和分片名称。我该怎么做?

这是我目前的代码:

    Octopus.using_all do
      users = User.all
      ap @shard  # This doesn't work
      ap users.length
    end

Shard::Proxy 中有一个方法 returns 分片名称,但我看不到检索它的明显方法。

我认为您必须手动遍历分片名称列表。

%i(shard_1 shard_2 shard_3).each do |shard|
  users = User.using(shard).all
  ap shard 
  ap users.length
end