Rails, перебирая все осколки, получайте имя осколка, используя Octopus
Настройка: у меня есть несколько баз данных одной схемы. Каждая база данных представляет данные для разных сайтов. Я хочу пройтись по каждому экземпляру и распечатать количество пользователей вместе с именем шарда. Как я могу это сделать?
Это код, который я до сих пор:
Octopus.using_all do
users = User.all
ap @shard # This doesn't work
ap users.length
end
1 ответ
Решение
В Shard::Proxy есть метод, который возвращает имена осколков, но я не вижу очевидного способа его получения.
Я думаю, вам придется вручную перебирать список имен осколков.
%i(shard_1 shard_2 shard_3).each do |shard|
users = User.using(shard).all
ap shard
ap users.length
end