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
Другие вопросы по тегам