Наконец починил искривленность ваших аватарок. Казалось бы элементарная мелочь, но там как обычно: бабка за дедку, дедка за репку, — и в итоге именно с аватарками пришлось отказаться от рельсового нативного загрузчика статики Active Storage.
Вместо этого аватарки теперь сервятся другим опенсорсным решением, гемом Shrine.
Active Storage делает версионирование картинок на лету, — то есть как только вы запросили версию 300×300, то AS сам тут же кропнет оригинал до этого размера, сохранит кропнутую версию, а второй раз и далее будет обращаться уже к версии с кропом.
Как бы вроде логично и даже прикольно, однако AS был разработан почти 10 лет назад, в рельсе 5.2, и тогда никто не думал про S3, CDN и тяжелое кэширование статики. И когда доходит до кэша, публичных бакетов, неподписанных путей и кастомных урлов – вот тут AS начинает тонуть.
Шрайну и того больше, уже лет пятнадцать, однако его догадка о максимально простом и гибком сетапе в эру дешевого CDN показала свою справедливость. Шрайн не делает версионирование статики по любому запросу с фронта, однако взамен дает возможность сгенерировать любые версии когда это потребуется — даже на этапе создания нового статического объекта. Иными словами, когда вы заливаете аватарку, Шрайн тут же порежет ее до 300×300, а потом во всех постах можно дергать уже эту кропнутую версию, а не оригинал. Если вдруг потребуется оригинал — то пожалуйста, он никуда не делся, и это будет отдельный объект в S3. Если же вам вдруг зачем-то нужно всем аватаркам сгенерить еще версию 200×200 с круглыми углами в черно-белом варианте и повернутые на 5 градусов по часовой стрелке — это делается плюс одной строкой в классе и одной командой на проде.
Я аккуратно перенес ваши аватарки из AS в Шрайн, убил аватарки из AS и натравил Шрайн на модель профиля. У двух юзеров аватарки не перенеслись, потому что были в каких-то непонятных форматах; если это ваш случай, то перезалейте пожалуйста в нормальном формате.
До конца года не загадывая мы вообще во всей своей статике откажемся от Active Storage в пользу Шрайна.
Сейчас вижу кое-где пятисотки, все починю, извините.