Ruby Digest #100: Сто випусків досвіду! Свіжі open-source інструменти для Rails, безпечні міграції та аналіз коду

Друзі, всім привіт! 👋

Сто випусків разом — це не просто цифра, це сотні крутих інструментів, тисячі годин оптимізації та чистий драйв нашої спільноти! Червень вчергове довів: Ruby мчить уперед, стаючи ще швидшим і безпечнішим.

У цьому ювілейному випуску — гарячі червневі релізи, дієві підходи до безпеки міграцій, Kamal-автоматизація та перевірена зброя для рефакторингу коду.

Новини

🔹 RubyGems / Bundler 4.0.15 Released — інструмент для встановлення й керування Ruby-гемами. У червні розробники зменшили використання оперативної пам’яті під час інсталяції, покращили роботу з Git LFS та виправили низку помилок

🔹 JRuby 10.0.6.0 Released — реалізація Ruby для платформи Java; у червні оновили jruby-openssl, покращили швидкодію інтеграції з Java та виправили помилки, зберігши сумісність із Ruby 3.4.

Корисне

🔹 gocardless / nandi — гем для безпечного виконання міграцій PostgreSQL у Rails. У червні проєкт перейшов у розряд open-source та запропонував альтернативний підхід до створення безпечних міграцій без блокування бази даних.

🔹 chad / turbulence — утиліта для аналізу Ruby-кодової бази через поєднання складності файлів і частоти їхніх змін. У червні вийшла версія, яка допомагає знаходити файли з високим churn (частота змін) і високою complexity (складність) як першочергових кандидатів на рефакторинг.

🔹 rubocop / rubocop — інструмент для аналізу якості та форматування Ruby-коду; у червні вийшли оновлення з новими перевірками, виправленнями помилок і покращенням сумісності з Ruby 4.0.

🔹 ruby / json — стандартна бібліотека для роботи з JSON у Ruby. У червні розробники значно покращили продуктивність парсингу, виправили помилки та додали підтримку Ruby 4.0.

🔹 excid3 / mailbin — легкий веб-інтерфейс для перегляду електронних листів під час розробки. У червні проєкт перейшов у розряд open-source як зручна альтернатива для локального тестування email.

🔹 crmne / kamal-backup — готове рішення для резервного копіювання застосунків, розгорнутих через Kamal. У червні додали автоматичне створення копій і спростили процес відновлення даних.

🔹 RailsEventStore / rails_event_store — бібліотека для побудови застосунків на основі подій (Event Sourcing). У червні розробники покращили роботу з проєкціями, виправили помилки та оновили сумісність із сучасними версіями Rails.

🔹 ruby-grape / grape — REST-подібний фреймворк для створення API на Ruby та Rails. У червні покращили сумісність із новими версіями Rack і Rails, а також виправили низку помилок.

🔹 shrinerb / shrine — гнучкий гем для завантаження та обробки файлів у Ruby-застосунках. У червні додали покращення для роботи зі сховищами файлів і виправили проблеми сумісності.

🔹 voormedia / rails-erd — інструмент для автоматичного створення ER-діаграм бази даних Rails-проєкту. У червні додали підтримку нових версій Rails і виправили помилки генерації діаграм.

🔹 peterc / whatlanguage — бібліотека для визначення природної мови тексту в Ruby; у червні вийшла версія з переробкою внутрішньої реалізації, підтримкою 160+ мов, 20+ систем письма, компактною trigram-моделлю без runtime-залежностей і вимогою Ruby 3.0+.

🔹 tilo / smarter_json — швидке рішення для читання й обробки великих JSON-файлів. У червні проєкт з’явився як новий гем із підтримкою потокового (stream) читання.

🔹 rails-lambda / lamby — фреймворк для запуску Rails-застосунків на AWS Lambda. У червні розробники покращили підтримку нових версій Rails і Ruby, а також оптимізували швидкість запуску (cold start).

🔹 unurgunite / irb-autosuggestions — корисний плагін для IRB, який додає автоматичні підказки під час введення команд. У червні проєкт офіційно вийшов як новий гем.

Цікаве

New book: Testing Rails from Scratch — анонс свіжої роботи Аарона Самнера про тестування Rails за допомогою вбудованого стеку (насамперед Minitest). Це практичний вступ до розробки через тестування (TDD) в контексті майбутніх Rails 8.1 та Ruby 4.0.

Square? Or freeform? — легка й цікава нотатка про створення вітража, присвяченого Ruby. Автор ділиться творчим процесом та порівнює два варіанти форми для майбутньої скляної панелі: класичну квадратну та оригінальну довільну.

RubyConf 2026 Is Where Ruby’s Next Chapter Begins — анонс головної події року від Ruby Central. Цього разу конференція повністю зосереджена на майбутньому мови та спільноти: обіцяють потужну технічну програму, нові ініціативи та великий акцент на залученні розробників до розбудови екосистеми

Статті й туторіали

🔸 Ruby 4.0 Is Here. Why Is AI Still Writing Ruby 3.0? — автор пояснює, чому більшість ШІ-моделей досі генерують код для Ruby 3.x, попри вихід Ruby 4.0, і що потрібно зробити, щоб отримувати більш сучасні рекомендації.

🔸 RubyLLM 1.16: Concurrent Tool Execution, Rails-Style Instrumentation, and api_base for Every Provider — детальний розбір можливостей нової версії бібліотеки. Автор розповідає про додавання моделей OpenAI Responses API, паралельне виконання інструментів, покращену роботу з ШІ-агентами та структурованими відповідями, що значно спрощує інтеграцію штучного інтелекту в Ruby-застосунки.

🔸 Ingress is not the owner of the invariant — стаття про проєктування Rails-застосунків, яка пояснює, чому бізнес-правила не варто прив’язувати до контролерів чи способу надходження даних, а слід зберігати їх у доменній логіці.

🔸 What SOLID Still Teaches Ruby Programmers — автор пропонує сприймати SOLID у Ruby не як жорсткий набір правил, а як спосіб помічати, де має жити поведінка, як поширюються зміни і які залежності справді треба контролювати.

🔸 No Node — матеріал про те, як у Rails-проєкті обійтися без системно встановленого Node.js, використовуючи Bun як окремий двійковий файл для пакетів і збірки ресурсів.

🔸 Herb and ReActionView: A Glimpse Into the Future of Rails Views — матеріал про Herb і ReActionView, які мають оновити роботу з Rails-шаблонами через кращий розбір ERB, сильніші інструменти й розумніше серверне рендерення.

🔸 Rethinking modularity in Ruby applications — стаття про підхід Syntropy, де залежності між частинами застосунку задаються явно через import і export, без глобальних констант і з простішим тестуванням.

🔸 Can Ruby Next Help You Upgrade an Application Gradually? — матеріал про Ruby Next як спосіб поступово оновлювати застосунок, використовуючи нові можливості Ruby ще до повного переходу на нову версію інтерпретатора.

🔸 rv plan and progress update — автор ділиться планами розвитку проєкту RV — нового менеджера версій Ruby, розповідає про вже реалізовані можливості, поточний стан розробки та найближчі кроки розвитку інструменту.

🔸 Build a Workflow-Priority Ticket Queue with Rails’ in_order_of Array Grouping — стаття демонструє підхід до реалізації пріоритетного виконання задач у Rails, пояснює, як правильно визначати порядок обробки записів і будувати зрозумілу логіку сортування без зайвого ускладнення коду.

🔸 How to Parallelize Your RSpec Test Suite Locally — тут пояснюють, як прискорити виконання тестів у Rails за допомогою паралельного запуску, які інструменти для цього використовувати та на що звернути увагу під час налаштування, щоб уникнути конфліктів між тестами.

🔸 Your Rails App Just Got Acquired. Now What? — матеріал про те, як після придбання підготувати Rails-застосунок до переходу: задокументувати сервіси, витрати, ризики, доступи й технічні слабкі місця.

🔸 Painfully Simple Test Case Mistakes That Are Easy To Fix — стаття з практичними порадами щодо покращення тестів у Rails: як зробити їх більш зрозумілими, швидшими, менш залежними один від одного та простішими в підтримці.

🔸 Rails: The Sharp Parts. An Index Is Not a Plan — допис пояснює, чому наявність індексу в базі даних ще не гарантує швидке виконання запиту, та показує, як аналізувати плани виконання SQL-запитів і знаходити справжні причини проблем із продуктивністю.

🔸 Exploring automatic Buffer Management with io_uring — матеріал про автоматичне керування буферами в UringMachine, щоб ефективніше використовувати io_uring у Ruby для асинхронного вводу-виводу з повторним використанням буферів і меншими витратами на копіювання.

🔸 Lisp’s Influence on Ruby — стаття розповідає, як ідеї та можливості Lisp вплинули на розвиток Ruby, зокрема на блоки, метапрограмування та гнучкість мови, а також пояснює, чому ці концепції залишаються актуальними для сучасної розробки.

🔸 The Ruby JRuby Was Built to Run — автор порівнює JRuby з Roundhouse і пояснює, що JRuby дає Rails-програмам швидший runtime, тоді як Roundhouse намагається прибрати частину динаміки Rails ще до виконання.

🔸 Spinel on Rails — матеріал про експериментальний підхід зі Spinel і Rails, де частину Ruby/Rails-коду намагаються спростити, зробити менш динамічною і підготувати до подальшої компіляції.

🔸 How to Leverage PurgeCSS in Your Rails App for Faster Stylesheets — стаття показує, як інтегрувати PurgeCSS у Rails-застосунок, щоб автоматично видаляти невикористані CSS-стилі, зменшити розмір файлів і прискорити завантаження сторінок.

🔸 When Rails Engines Are the Wrong Tool — допис розглядає випадки, коли використання Rails Engines лише ускладнює проєкт, і пояснює, у яких ситуаціях краще обрати простішу структуру застосунку або інші способи організації коду.

🔸 Scaling Rails at Aura Frames: Splitting to 8 Primary DBs and Reaching #1 in the App Store — розбір того, як команда Aura Frames масштабує Rails-застосунок для роботи під піковим навантаженням, використовуючи кешування, черги фонових завдань, оптимізацію бази даних і поступове вдосконалення архітектури.

Подкасти

Drifting Ruby

📌 Polling for New Records — Advanced — практичне відео про реалізацію автоматичного отримання нових записів у Rails без перезавантаження сторінки, використовуючи сучасні можливості Turbo та ефективне опитування сервера.

📌 Analyze Active Storage — розбір можливостей Active Storage для аналізу завантажених файлів, отримання їхніх характеристик і використання цих даних у Rails-застосунку.

📌 Schedule Emails — відео демонструє, як реалізувати відкладене надсилання електронних листів у Rails за допомогою Active Job і фонових черг.

Remote Ruby

✔️ Revise Auth and Podcasting Plans — випуск про зміни в підходах до автентифікації в Rails-проєктах, розвиток власних продуктів і плани щодо подальшого розвитку подкасту.

✔️ [The lost episode 259]  All Right, Rant Time — Debugging — розмова про пошук і налагодження складних помилок у Ruby-застосунках, а також типові труднощі, з якими стикаються розробники.

✔️ Navigating Subscription Overhauls and Payments — обговорення переходу на нову модель підписок, інтеграції платіжних систем і практичних аспектів керування оплатами в SaaS-проєктах.

✔️ Blastoff Rails Recap and Ruby Central Revamp — підсумки конференції Blastoff, останні новини екосистеми Rails і зміни, які готує Ruby Central для розвитку Ruby-спільноти.

On Rails

✔️ DHH: Basecamp 5, Vibe Coding, and the Future of Rails — інтерв’ю з David Heinemeier Hansson про розробку Basecamp 5, вплив ШІ на програмування, майбутнє Rails і підходи до створення сучасних вебзастосунків.

✔️ Nikky Southerland: Lessons from 13 Years of Rails at the Auto Shop — розмова з Nikky Southerland про досвід підтримки великого Rails-проєкту протягом 13 років, розвиток застосунку, технічний борг і практичні уроки довготривалої розробки.

RWpod

💎 03 випуск 14 сезону. Ruby 4.0.5, Mustermann 4.0, Hanakai, Vite 8.1, Astro 7.0, TreRegex, L-Scan та інше — автори епізоду детально розбирають найсвіжіші події в екосистемі. У фокусі уваги — гарячі релізи бібліотек, корисні утиліти для веб-розробки, а також аналітика технічних статей, які найбільше зацікавили сучасну Ruby-спільноту.

Підписуйтеся на Telegram-канал «DOU #tech», щоб не пропустити нові технічні статті

👍ПодобаєтьсяСподобалось5
До обраногоВ обраному1
LinkedIn
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter
Дозволені теги: blockquote, a, pre, code, ul, ol, li, b, i, del.
Ctrl + Enter

Ruby is dead. Шість вакансій на ДОУ.


Розкажіть це сотні рубістів, що сидять в Україні без роботи по пів року і як і я починають думати, що пора міняти стек.

Хай не думають, а міняють. Це не важко.

Вітаю! Читаю, якщо не з першого, то десь із 20-го випуску, не пропускаючи жодного!

Я теж щойно випустив версію 0.8.1 свого гема pg_reports для аналізу проблем PostgreSQL, і він став standalone, ще з квітня намагався змусити нормально працювати в такому режимі! Вміє просто дохріна всього, зокрема це універсальний експортер для Prometheus/Grafana має власний редактор запитів і трасувальник для EXPLAIN ANALYZE. А ще, крім англійської, там є українська мова з купою інформації про особливості взаємодії з базами даних.

У мене вдома лише три коти, тож похвалитися було нікому, а тут якраз дайджест від шанованої людини.

Дякую за привітання та за те, що залишаєтеся з нами вже стільки випусків. Така тривала підтримка — це головна мотивація вести дайджест.

Вітаю з релізом версії 0.8.1. Запуск автономного режиму та інтеграція з Prometheus/Grafana для pg_reports — це серйозна інженерна робота. Окремо дякую за українську локалізацію, це дуже цінно.

Підписатись на коментарі