Ruby Digest #92. Ruby 3.3.10, оновлення та практичні гайди для розробників

Привіт, Ruby-спільното! У цьому випуску: Ruby 3.3.10, нові релізи Rails і RubyGems, оновлення ключових бібліотек та добірка статей про Hanami, Kamal, continuations і розвиток Ruby-спільноти.

Новини

🔹Ruby 3.3.10 Released — оновлення з виправленнями безпеки та стабільності

🔹The Transition of RubyGems Repository Ownership — офіційний анонс про перехід RubyGems.org на нову інфраструктуру з підвищеною надійністю.

🔹New Rails Releases and End of Support Announcement — офіційне повідомлення від Rails Core про вихід нових версій і завершення підтримки старих гілок 7.0 та 7.1.

Корисне

🔹 amazing-print / amazing_print — повністю перероблено форматування хешів і додано підтримку JSON-виводу, покращено відображення об’єктів Data, а також додано інтеграцію з rdbg.

🔹parruda / swarm — оновлено SDK і модуль пам’яті, спрощено встановлення гема через нові інструкції, а також оптимізовано внутрішню логіку керування агентами.

🔹thoughtbot / clearance — оновлено залежності та CI для сумісності з новими версіями Ruby, виправлено тести й документацію.

🔹ruby / rdoc — оновлено генератор документації для кращої сумісності з Ruby 3.3, покращено відображення структур у HTML-форматі, а також виправлено обробку Unicode-символів у вихідному коді.

🔹GeorgeKaraszi / ActiveRecordExtended — впроваджено підтримку Rails 8, покращено роботу з CTE-запитами та distinct_on, а також виправлено кілька помилок у upsert_all і grouping_sets.

🔹docusealco / rllama — новий гем, що додає підтримку локальних LLM-моделей (LLaMA, Mistral, Gemma) без зовнішніх API. Дозволяє запускати інференс і чати прямо з Ruby-коду, роблячи інтеграцію AI у Rails-застосунки простою та автономною.

🔹rack / rack-attack — ​​покращено сумісність із Rails 6+, виправлено помилки з кешем і request.ip, згорнуто підтримку старих версій Rack та Rails.

🔹modelcontextprotocol / ruby-sdk — впроваджено новий клієнтський API для MCP Server Discovery, покращено обробку з’єднань і таймаутів, а також додано приклади інтеграції для розробників.

🔹basecamp / activerecord-tenanted — у цьому оновленні впроваджено підтримку Rails 8, покращено ізоляцію контекстів орендарів та спрощено конфігурацію tenant middleware.

🔹openai / openai-ruby — реалізовано підтримку Responses API для нового підходу до генерації відповідей, оновлено структуру клієнта з більш чистим поділом endpoint-методів, а також додано підтримку моделей із tool-calling.

🔹mattbrictson / bundle_update_interactive — покращено сумісність із Bundler 2.5, додано кольоровий інтерфейс оновлень і виправлено проблему з вибором залежностей у великих Gemfile.

🔹puma / puma — додано підтримку Ruby 3.3, покращено роботу з UNIX-сокетами та обробку keep-alive-з’єднань, а також оновлено механізм журналювання і виправлено кілька проблем із ThreadPool.

🔹ViewComponent / view_component — впроваджено підтримку Ruby 3.3, оновлено документацію та генератори компонентів, а також виправлено помилки при використанні slots та renders_many.

🔹jrochkind / attr_json — гем отримав підтримку Rails 8 і Ruby 3.3, оновлено роботу з типами через ActiveModel::Type, а також прибрано застарілі API для старих версій Rails.

🔹flyerhzm / bullet — впроваджено підтримку Ruby 3.3 і Rails 8, оновлено повідомлення для n+1 запитів, а також покращено інтеграцію з ActiveRecord::Relation.

🔹shardlab / discordrb — оновлено підтримку Discord API v10, додано нові події та атрибути для інтеракцій і команд, а також виправлено проблеми з reconnection та кешуванням користувачів.

Цікаве

🔹The little Random that could — історія про те, як Random у Ruby еволюціонував у потужний і точний генератор псевдовипадкових чисел із Mersenne Twister і PCG.

🔹Open Source is the Most Fragile and Most Resilient Ecosystem — Пітер Чжу розмірковує про суперечливу природу open source — одночасно крихку та надзвичайно стійку систему, яка тримає сучасний софт.

🔹Ruby And Its Neighbors: Perl — Нойл Раппін порівнює Ruby з Perl, аналізуючи, як різниця у філософії та спільнотах сформувала долю обох мов.

🔹Threat Intelligence Issue 3 — Тобі Осборн продовжує серію статей про кібербезпеку, пояснюючи, як мислити як зловмисник і покращувати захист застосунків.

🔹We want to move Ruby forward — Андре Арко ділиться баченням майбутнього Ruby: сильніша спільнота, модернізація інфраструктури RubyGems і більше відкритості у процесах.

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

🔹Buckle Up, There’s a New Gem Server in Town: gem.coop — новий експериментальний сервер RubyGems із сучасною архітектурою, прискореним пошуком та фокусом на спільноті.

🔹How to Use Pattern Matching to Locate Elements in a Hash Array — практичний гайд із прикладами, як знаходити потрібні елементи в масивах хешів за допомогою Ruby pattern matching.

🔹The Automated Roadmap to Upgrade Rails — FastRuby оголосили новий інструмент для автоматичного формування дорожніх карт проєктів, що спрощує управління технічним боргом.

🔹How to use local Docker registry in Kamal — покрокова інструкція, як підняти локальний Docker Registry і використовувати його з Kamal для швидших деплоїв.

🔹Building a Sub-command Ruby CLI with just OptionParser — простий спосіб створити CLI з підкомандами у Ruby без зайвих бібліотек, використовуючи лише OptionParser.

🔹Delete your old migrations, today — чому варто періодично очищати базу від старих міграцій і як зробити це безпечно, не зламавши історію схем.

🔹Create a Kanban board with Rails and Hotwire — RailsDesigner показує, як створити інтерактивну канбан-дошку в Rails за допомогою Hotwire без жодного рядка JavaScript.

🔹Lost in Minitest? Start here! — гайд для початківців, який пояснює базові концепти Minitest, від assert_equal до тестування об’єктів у Rails.

🔹Announcing rv 0.2 — Андре Арко представив нову версію rv — легкий Ruby version manager із кращою підтримкою Bundler та мінімалістичним підходом.

🔹Active Storage Internals: How has_one_attached DSL Works — глибокий розбір внутрішньої DSL-архітектури Active Storage: як Rails визначає та обробляє вкладення через has_one_attached.

🔹Packaging Ruby Apps with Warbler: Executable JAR Files — Хідіус показує, як пакувати Ruby-застосунки в JAR-файли за допомогою Warbler, щоб запускати їх на JVM або розгортати як сервіс.

🔹Announcing Hanami 2.3 beta2 — нова бета-версія Hanami із покращеннями в Hanami::Action, оновленими middleware і стабільнішою інтеграцією з dry-system.

🔹Why Fixed-Cost Maintenance Beats «As-Needed» Upgrades — FastRuby пояснюють, чому регулярна підтримка проєкту вигідніша за рідкі оновлення «за потребою» — менше ризиків, передбачувані витрати.

🔹Avoid Microsecond Pitfalls When Comparing Times in Tests — практичні поради, як уникати пасток при порівнянні часу з мікросекундною точністю у тестах Ruby.

🔹Updating Deprecations with Version Information — Хідіус показує, як правильно позначати та оновлювати депрекейшени у Ruby-проєктах, додаючи контекст версій і зворотну сумісність.

🔹jj part 3: workflows — Андре Арко продовжує серію про JJ, розповідаючи, як налаштовувати робочі процеси для автоматизації рутинних дій у Ruby-середовищі.

🔹Adding Breadcrumbs to a Rails Application — AvoHQ демонструють, як додати красиву та динамічну систему хлібних крихт у Rails-застосунок із підтримкою Turbo-кадрів.

🔹Rails 8.1 Local CI as First-Class Support — FastRuby показують, як налаштувати локальне CI-середовище для Rails 8.1 із мінімальними залежностями — швидше, стабільніше та без зовнішніх сервісів.

🔹Your First MCP Server: A Complete Beginner’s Guide — покроковий туторіал із побудови першого MCP Server у Ruby — від базового налаштування до інтеграції з AI-сервісами.

🔹Hanami for Rails Developers: Part 4: Associations — Райан Бігг пояснює, як працюють асоціації у Hanami 2, порівнюючи їх із Active Record — практичний міст між двома світами.

🔹Render a Component Preview In Showcase for Ruby on Rails — AppSignal показують, як створити інтерактивний Showcase із компонентами Rails для зручного попереднього перегляду та тестування UI.

🔹Git Commit Empty — пояснення від Alchemists.io, коли та навіщо використовувати порожні коміти (—allow-empty), наприклад, для тригерів CI/CD або документування змін.

🔹Red Flags That Signal Growing Technical Debt: What FastRuby Has Learned from Client Projects — Planet Argon ділиться типовими «червоними прапорцями» техборгу, які FastRuby спостерігали у клієнтських проєктах, і як їх помічати раніше.

🔹Introducing Perron: Rails-based static site generator — новий фреймворк від RailsDesigner для створення внутрішніх інструментів на Rails із Hotwire — простий, швидкий та гнучкий.

🔹Continuations, 2025/42: Easy breezy — Тім Райлі пояснює концепцію continuations у Ruby через зрозумілі приклади та показує, як вони можуть спростити асинхронний код.

🔹More Minitest::Spec shenanigans — продовження гайду Ремі Мерсьєра про Minitest, де показано, як організовувати більш елегантні тести у форматі spec із практичними прикладами.

🔹Searching Ruby’s documentation — Джон Хоуторн показує, як створити швидкий пошук по Ruby-документації з використанням індексації й сучасних пошукових алгоритмів.

🔹Open Graph Image Generation in Rails — AvoHQ демонструють, як автоматично генерувати Open Graph-зображення для сторінок Rails за допомогою MiniMagick і ActionController::Metal.

🔹Papercraft 3.0 Released — нова версія Papercraft із підвищеною продуктивністю, оновленими компонентами та кращим API для шаблонів.

🔹InvoicePrinter 2.5 with QR images and Ruby 3.4 support — оновлення бібліотеки для генерування PDF-рахунків: підтримка нових валют, гнучкі макети та покращене форматування чисел.

🔹devise-otp 2.0 released — оновлення бібліотеки для двофакторної автентифікації в Rails через одноразові паролі (OTP): підтримка Rails 8, покращена безпека та простіша інтеграція.

🔹Announcing Attractive.js, a new JavaScript-free JavaScript library — нова бібліотека від RailsDesigner для створення привабливих анімацій і переходів у Hotwire-застосунках без написання JavaScript-коду.

🔹Log SQL queries in the Rails console — AvoHQ показують простий спосіб логувати SQL-запити безпосередньо в консолі Rails для налагодження продуктивності.

🔹Quickly clear the Rails cache in development — ще один лайфхак від AvoHQ — команда ділиться зручним методом для швидкого очищення кешу у режимі розробки без перезапуску сервера.

🔹Warbled Sidekiq: Zero-install Executable for JVM — Хідіус експериментує із запуском Sidekiq у середовищі JRuby через Warbler, показуючи, як Ruby-процеси можна пакувати та запускати як JVM-сервіси.

🔹Continuations, 2025/43: Countdown continues — Тім Райлі продовжує серію про continuations у Ruby, розбираючи складні приклади та показуючи, як застосовувати їх у реальних сценаріях.

🔹Parsing: How Ruby Understands Your Code — Пат Шонессі пояснює, як Ruby перетворює код у внутрішні структури через парсинг — від лексера до абстрактного синтаксичного дерева.

🔹Everyday Rails is now Left of the Dev — інтерв’ю з автором Everyday Rails про те, як змінилась культура Ruby-розробки та чому тестування залишається її основою.

🔹A Rails 8 Upgrade Story: Building Momentum Without a Rewrite — Planet Argon ділиться досвідом поетапного переходу на Rails 8 без повного переписування коду, з фокусом на підтримці темпу команди.

Подкасти

​​On Rails

🔸Florent Beaurain: Optimizing Rails Tests at Doctolib Scale

🔸Alexander Stathis: Scaling a Modular Rails Monolith at AngelList

Drifting Ruby

🔸Omarchy

🔸Kamal Logs Upload

🔸Pull to Refresh

🔸Active Job Continuations

Remote Ruby

🔸Blastoff Rails with Travis Dockter

🔸Who Owns RubyGems? Inside the Ruby Central Controversy

🔸Chris Is Back, Ruby Drama, Projects, and Parenthood

Для гарного настрою

Подобається дайджест? Підписуйтесь акаунт автора вгорі сторінки, щоб отримувати сповіщення про нові випуски на пошту.

Підписуйтеся на 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

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