Ruby дайджест #37: Citadel Architecture, релиз Rails 6.0.3.1, запись докладов RailsConf 2020 CE
Начнем с того, что 18 мая вышел важный релиз Rails с множеством исправлений, связанных с безопасностью, DHH ввел новый термин для монолитных приложений, работающих в связке с микросервисами, а конференцию RubyC 2020 отменили.
Тренды в сообществе
Citadel Architecture
DHH ввел новый термин Citadel Architecture, описывающий монолитные приложения, которые работают в связке с несколькими вспомогательными приложениями для узконаправленных нужд.
In addition to the Majestic Monolith, someone should write up the pattern of The Citadel: A single Majestic Monolith captures the majority mass of the app, with a few auxiliary outpost apps for highly specialized and divergent needs.
— DHH (@dhh) April 7, 2020
AppSignal поделились тем, как используют данный паттерн. Также Sid Sijbrandij отметил, что этот подход активно использует GitLab.
Прекращение поддержки Ruby 2.4
Команда разработки Ruby опубликовала пост в блоге о прекращении поддержки Ruby 2.4. Последний релиз 2.4.10 состоялся 31 марта и стал последним в ветке 2.4.x.
Доклады RailsConf 2020 CE
На канале Confreaks опубликовали плейлист докладов.
Релизы
rails 6.0.3.1 — исправление уязвимостей CVE-2020-8166, CVE-2020-8164, CVE-2020-8167, CVE-2020-8165, CVE-2020-8162.
Статьи и туториалы
Comparison of approaches to multitenancy in Rails apps — сравнительная таблица подходов создания multitenancy-приложений.
A hands-on tutorial to debugging your code with pry-byebug — туториал по дебагингу кода с помощью гема pry-byebug.
Testing Ruby decorators with super_method — тестирование декораторов с помощью вызова родительских методов через super_method.
Why you (probably) don’t need PostGIS — статья о том, как можно заменить расширение PostGIS с помощью встроенных возможностей PostgreSQL.
Ruby Concurrency Final Report — отчет о проделанной работе над улучшением concurrency в Ruby от Samuel Williams.
Feature Flags: The stupid simple way to de-stress production releases — использование переменных окружения (или настроек) для возможности включать/отключать фичи без создания нового релиза.
Custom Exception Handling in Ruby — подборка хороших практик по работе с исключениями в Ruby.
Dissecting Rails Migrations — шпаргалка по использованию ActiveRecord Migrations.
Ruby Next: Make all Rubies quack alike — транспайлер, позволяющий использовать фичи новых версий языка без обновления Ruby.
Postgres Distinct On — автор делится опытом избежания проблемы N+1 на уровне базы данных.
Binpacking SQS batches — алгоритм обработки SQS-сообщений на Ruby.
RuboCop Defaults Survey Results — результаты опроса разработчиков об их дефолтных настройках RuboCop.
How to restart Sidekiq automatically for each deployment — как и почему нужно перезапускать Sidekiq после каждого деплоя.
Full Text Search in Milliseconds with Rails and PostgreSQL — туториал по имплементации полнотекстового поиска с помощью pg_search.
Ruby 2.7 deprecates conversion of keyword arguments — обновления по работе с аргументами в Ruby 2.7.
How to Fix Slow Code in Ruby — рекомендации по использованию бенчмарков для оптимизации кода от команды Shopify.
Five common issues with services and dry-monads — автор рассматривает типичные ошибки использования монад в сервисах.
70+ Ruby on Rails Security Best Practices & Vulnerabilities — большая статья-чек-лист по безопасности в Rails-приложениях.
Practical use of Ruby PStore — пример использования встроенного класса PStore.
Обновление Rails
Our Rails Upgrade Process: How to bundle update rails — пошаговый подход к обновлению версии Rails.
Upgrading Rails: Tracking down deprecated callbacks in Rails 5.0 — отслеживание колбеков при переходе с Rails 5.0 на Rails 5.1.
Инструменты
Gruff — построение PNG-графиков из датасетов.
AmazingPrint — форматирование результатов выполнения кода в консоли.
Tomo — альтернатива Capistrano для деплоя Rails-приложений.
Retriable — простой DSL для обработки исключений.
Committee — Rack Middleware для работы с JSON Schema.
Подкасты
Ruby Rogues
RR 454: Music and Factory Bot with Daniel Colson
RR 456: Ruby for Good :) with Sean Marcia
RR 458: Rules of OOP in Pictures with Ivan Nemytchenko
RR 459: Mutation Testing with Dave Aronson
RR 460: How to Brainstorm Introverts with DeeDee Lavinder
Remote Ruby
Joined by Josh Wood from HoneyBadger.io and Heya.email
Bridgetown Ruby with Jared White
Railsconf Couch Edition & May of WTFs with Matt Swanson
RWPod
Ruby on Rails Podcast by 5by5
313: Strangler Fig Pattern & God Objects with Adrianna Chang
314: Active Storage & Modern Images with Mark Hutter
315: Worrying About the Wrong Things with Hilary Stohs-Krause
316: MongoDB and Onboarding Junior Developers with Emily Giurleo
317: Coming Home to Rails with Vince Eberle
318: Error Messages Are Your Friends with Gina Verrastro
319: Gap Here and 10x Customers with Sean Devine
320: ViewComponents in Action with Andrew Mason
События
RubyC 2020 — официально отменена в связи с COVID-19.
Brighton Ruby Conf— пройдет в формате записанных докладов.
← Предыдущий выпуск: Ruby дайджест #36