Ruby Digest #98: квітень у Ruby — досвід, підходи та практика
Друзі, всім привіт! 👋
Поки хтось каже, що Ruby — це «стабільне ретро», спільнота продовжує ламати стереотипи та випускати інструменти, від яких зносить дах.
Квітень видався гарячим: від закриття критичних дірок у безпеці до крутих підходів у роботі з AI та даними.
Новини
🔹Protecting rubygems.org from the outside in: DoS prevention and compromised passwords — стаття про нові рівні захисту RubyGems: перевірку паролів через Have I Been Pwned та автоматичний аудит вмісту гемів при публікації.
🔹Ruby 4.0.3 Released — випуск із терміновим патчем безпеки для ERB (CVE-2026-41316), що закриває критичну вразливість.
🔹JRuby 10.1.0.0 Released — випуск із підтримкою Ruby 4.0 та новими оптимізаціями; для стабільних систем розробники все ще радять залишатися на гілці 10.0.
🔹4.0.11 Released — випуск RubyGems 4.0.11 і Bundler 4.0.11 з невеликими поліпшеннями, виправленнями помилок і змінами в роботі lockfile та встановленні залежностей.
🔹mruby 4.0.0 released — перший стабільний випуск гілки mruby 4.0 додає pattern matching, низку змін у C API та покращення використання пам’яті для вбудованих систем.
Корисне
🔹holidays / holidays — інструмент для роботи зі святами й календарними датами в Ruby; у квітні вийшли версії 9.1.1, 9.1.2 і 9.2.0.
🔹mudge / re2 — обгортка над RE2 для швидких і безпечних регулярних виразів у Ruby; у квітні вийшла версія 2.27.0 для різних платформ.
🔹ruby-amqp / bunny — клієнт для роботи з RabbitMQ у Ruby; у квітні вийшли версії 3.0.0 і 3.1.0.
🔹Shopify / ruby-lsp — інструмент для підказок, навігації та перевірки Ruby-коду в редакторі; у квітні вийшла попередня версія 0.27.0.beta1.
🔹danmayer / coverband — інструмент для перевірки, який код реально використовується в застосунку; у квітні вийшла версія 6.2.0.
🔹grosser / parallel — інструмент для паралельного виконання Ruby-коду в кількох процесах або потоках; у квітні вийшли версії 1.28.0, 2.0.0, 2.0.1 і 2.1.0.
🔹puma / puma — вебсервер для Ruby та Rails-застосунків; у квітні вийшли версії 8.0.0 і 8.0.1.
🔹pglombardo / PasswordPusher — застосунок для безпечного передавання паролів і секретів через одноразові посилання; у квітні вийшла версія 2.5.0 із посиленими правилами безпеки, переходом на importmap для JS/CSS і оновленням до Ruby 4.0.3 та Puma 8.
🔹faker-ruby / faker — інструмент для створення тестових даних: імен, адрес, телефонів тощо; у квітні вийшли версії 3.7.1 і 3.8.0.
🔹shakacode / react_on_rails — інструмент для поєднання Rails і React із рендерингом на сервері; у квітні вийшла версія 16.6.0.
🔹cucumber / cucumber-ruby — інструмент для приймальних тестів, які можна описувати зрозумілою мовою; у квітні вийшла версія 11.0.0.
🔹socketry / async-http — інструмент для асинхронних HTTP-клієнтів і серверів у Ruby; у квітні оновили обробку помилок, повтори запитів і роботу з HTTP/1 та HTTP/2.
🔹pry / pry-stack_explorer — додаток до Pry для перегляду стеку викликів під час налагодження коду; у квітні вийшла версія 0.6.3.
🔹rsim / ruby-plsql — інструмент для виклику Oracle PL/SQL-процедур із Ruby; у квітні вийшли версії 0.9.0 і 0.9.9.
🔹ruby / irb — стандартна інтерактивна консоль для роботи з Ruby; у квітні вийшла версія 1.15.2 з виправленнями та покращеннями стабільності.
Статті й туторіали
🔸Dynamic Ruby And Hidden Maintenance Costs — авторка показує, як надто динамічні конструкції на кшталт constantize і classify роблять Ruby-код менш прозорим і ускладнюють довготривалу підтримку проєкту.
🔸Guard rails, not gatekeeping — матеріал про те, як замість обмежень для новачків будувати автоматичні запобіжники: від лінтерів і статаналізу до pre-commit хуків і перевірок безпеки.
🔸superpowers-ruby v6.1.0: a Rails upgrade skill — стаття про нову навичку rails-upgrade для superpowers-ruby, яка допомагає готувати оновлення Rails через поетапну перевірку, звіт про ризики та набір довідкових матеріалів.
🔸On building a framework-agnostic Ruby gem (and making sure it doesn’t break) — допис про те, як розробляти геми, що однаково працюють з ERB, React та Vue, та забезпечувати їхню стабільність через тестування на рівні інтерфейсу.
🔸Form Objects vs Service Objects in Rails — кейс пояснює, коли в Rails варто використовувати form object для обробки користувацької форми, а коли — окремий клас для бізнес-логіки, не прив’язаної до введення даних.
🔸Announcing Fuik: a webhook engine for Rails — матеріал про Fuik, рушій для Rails, який приймає, зберігає й допомагає обробляти вебхуки від різних сервісів.
🔸MapView: Server-Side Map Rendering for Rails — стаття про MapView, Ruby-бібліотеку для серверної побудови карт, маршрутів і геоданих у Rails без JavaScript і зовнішніх картографічних сервісів.
🔸Use Rails Combined Credentials — допис про використання Rails.app.creds для роботи з секретами через єдиний інтерфейс замість змішування ENV та credentials (очікується в Rails 8.2).
🔸Basic role management — стаття показує просту схему керування ролями в Rails через User, Role і UserRole, включно з глобальними, класовими та прив’язаними до ресурсу ролями.
🔸The Hidden Query Boundary in Rails Predicates — матеріал пояснює, що звичні перевірки на кшталт present? для асоціацій Active Record можуть непомітно виконувати SQL-запити й приховувати межу між пам’яттю та базою даних.
🔸The Rails Way in 2026 — автор описує типовий вигляд сучасного Rails-проєкту як поєднання великої моделі, колбеків, сервісних об’єктів і фонових задач, де стан процесів часто живе всередині Active Record.
🔸A Preflight for Rails Upgrades — стаття про те, що перед оновленням Rails варто спершу дослідити залежності, середовища виконання й приховану поведінку системи, щоб зробити оновлення передбачуваним.
🔸Different Approaches to Debugging Query Performance in Rails — допис про способи знаходити повільні запити в Rails за допомогою вбудованих засобів, gem-ів і можливостей самої бази даних.
🔸Migrating a Rails App from Heroku to Railway — практичний розбір перенесення Rails-застосунку з Heroku на Railway з порадами щодо відновлення бази, DNS, змінних середовища й типових помилок під час міграції.
🔸PII filtering for RubyLLM with Top Secret — матеріал про інтеграцію Top Secret з RubyLLM для автоматичного приховування чутливих персональних даних у повідомленнях до мовних моделей.
🔸Optimizing Ruby Path Methods — розбір про внутрішні оптимізації методів роботи зі шляхами у Ruby, які допомагають зменшити час запуску й виконання коду.
🔸Refactoring Databases (in Rails) — стаття про поетапне й безпечне оновлення схеми бази даних у Rails через невеликі зміни, перенесення даних і поступове прибирання застарілої структури.
🔸The Missing Bundler Features — автор пише не про швидкодію, а про відсутні можливості Bundler, які могли б спростити роботу з конфліктними залежностями й застарілими gem-пакетами.
🔸Let’s enable MFA for all Ruby gems — заклик увімкнути багатофакторний захист для всіх gem-пакетів, щоб зменшити ризик шкідливих публікацій через зламані облікові записи.
🔸Making the Rails Default Job Queue Fiber-Based — стаття про перехід Solid Queue на fiber-основу, щоб обробляти значно більше задач з меншими витратами потоків і з’єднань до бази даних.
🔸Ruby Concurrency: What Actually Happens — матеріал пояснює, як у Ruby працюють процеси, потоки, fibers і Ractors та чим вони відрізняються на практиці.
🔸Rails Authorization Patterns: Pundit, CanCanCan, and Action Policy — допис пояснює, як будувати авторизацію в Rails, щоб не пропускати перевірки доступу в контролерах, колекціях, фонових задачах і багатокористувацьких сценаріях.
🔸Monitoring Sidekiq Job Performance with AppSignal — це покроковий розбір моніторингу Sidekiq через AppSignal з акцентом на тривалість задач, час очікування в черзі, помилки та сповіщення про проблеми.
🔸A Better Experience for Everyone: Usability Meets Accessibility — стаття пояснює, що доступність без зручності користування не дає повноцінного результату, і показує це на прикладах текстів посилань, описів зображень і форм.
🔸Perron 1.0 here is here — анонс Perron 1.0, генератора статичних сайтів на Rails, з новими можливостями на кшталт програмного створення сторінок, завантаження даних з API та live reload.
🔸Scaling Ruby’s defenses with AI — Ruby Central описує, як використовує моделі для пошуку вразливостей у критично важливих gem-пакетах, залишаючи перевірку й підтвердження результатів за людьми.
🔸Setting Up Server Monitoring for a Rails App on Hatchbox — покроковий матеріал про моніторинг Rails-застосунку на Hatchbox через AppSignal з акцентом на пам’ять, процесор, диск і мережеві показники сервера.
🔸Our Rails Upgrade Methodology as Claude Code Skills — стаття про відкритий набір навичок для Claude Code, який переносить методику FastRuby для Rails-оновлень із dual boot, поетапним переходом між версіями та постійною перевіркою тестів.
Відео
📌Monitoring Cron Jobs with Whenever — випуск про те, як у Rails налаштувати cron-задачі через Whenever, а також передавати їхні логи й статус у AppSignal.
📌Ernesto Tagwerker — Teaching Claude Code to Upgrade Rails — виступ про відкриту навичку для Claude Code, яка допомагає оновлювати Rails-застосунки від старих версій до сучасних на основі реальної практики апгрейдів.
Подкасти
Drifting Ruby
📌N+1 Driven Development — розбір пошуку й усунення проблеми N+1 запитів у Rails.
📌Easter Eggs — матеріал про невеликі приховані деталі в коді, які додають для зручності або просто заради цікавого ефекту.
📌AI Powered Logs — епізод про аналіз Rails-логів за допомогою моделі для пошуку помилок і повільних запитів.
📌AI Error Tracking — Part 1 — матеріал про налаштування відстеження помилок у Rails-застосунку для подальшого аналізу за допомогою моделі.
📌AI Error Tracking — Part 2 — продовження теми з підключенням аналізу помилок за допомогою моделі.
Remote Ruby
✔️Memcached Mayhem — епізод про безпекові оновлення Ruby і Rails, проблеми кешування через Redis і Memcached та практичні труднощі з продуктивністю й інтерфейсом у великих застосунках.
✔️Governance, Security Flaws, and AI Tool — розмова про конфлікт довкола керування RubyGems і Bundler, ризики в ланцюжку залежностей та вплив засобів на основі штучного інтелекту на сучасну розробку.
✔️Joined by John Athayde — епізод про шлях Джона Атайде в Rails-спільноті, а також про зв’язок між дизайном, реалізацією, інтерфейсами та змінами в роботі через штучний інтелект.
✔️Ruby Central Restructuring — випуск про кадрові зміни в Ruby Central, фінансові труднощі організації та питання довіри, прозорості й майбутнього спільноти.
RWpod
✔️02 випуск 14 сезону. Ruby 4.0.2, Mruby 4.0.0, Puma 8.0, TypeScript 7.0 Beta, Transformers.js v4, Qpdf Wasm та інше — випуск про новини зі світу Ruby і веброзробки, зокрема Ruby 4.0.2, mruby 4.0.0, Puma 8.0, JRuby 10.1.0.0, TypeScript 7.0 Beta і нові інструменти для вебу.
On Rails
✔️Simone Carletti: Rails at the Center of DNSimple — епізод про те, як DNSimple багато років тримає Rails у центрі своєї платформи, поєднуючи його з Go та Erlang для роботи великої DNS-інфраструктури.
✔️Brian Scanlan: Building AI-First at Intercom — епізод про те, як Intercom розвиває великий Rails-моноліт і водночас перебудовує розробку навколо засобів на основі штучного інтелекту, зокрема Claude Code.
1 коментар
Додати коментар Підписатись на коментаріВідписатись від коментарів> Ruby дайджест 97
> бессмысленная и скучная жизнь
> Ruby дайджест 98
И так каждый месяц.