Глубокий разбор адаптации Rails-кода к Ractor. У каждого Ractor своя блокировка виртуальной машины, что позволяет исполнять Ruby-код параллельно. Цена этого: запрет делить изменяемые объекты между Ractor.
В карте такого рефакторинга разобраны четыре узла:
Глубокая заморозка объектов через
Ractor.make_shareable;удаление мемоизации или перенос вычисления в
initialize либо freeze;Read-Copy-Update для настроек: скопировать значение, изменить, заморозить и заменить;
новый API для публичных изменяемых значений без поломки обратной совместимости.
Небольшие приложения команда уже запускает на Ractor, но крупные Rails-приложения с множеством гемов пока остаются целью. Читать Ruby-разработчикам, которые хотят начать аудит с изменяемых констант, ленивых вычислений и настраиваемых API.
