Ruby Digest #93 — Ruby 4.0 Preview 2, оновлення гемів, гайди та поліпшення для Rails 8

Привіт, Ruby-спільното! У цьому випуску: Ruby 4.0.0 Preview 2 з покращеннями JIT і Fiber, оновлення Rails, RubyGems 4.0 та десятки інших гемів. Також добірка статей про продуктивність, тестування, метапрограмування й нові можливості Rails 8 і Hanami 2.3.

Новини

🔹 Ruby 4.0.0 preview2 Released — вийшов другий прев’ю Ruby 4.0: покращення JIT, швидші Fiber-и, зміни у VM та стабілізація нових синтаксичних можливостей.

🔹 4.0.0.beta2 Released — оновлення RubyGems 4.0: оптимізовано dependency resolution, нові команди, покращення сумісності та продуктивності.

Корисне

🔹 Disallow code usage with a custom `clippy.toml` - ​​Schneems показує, як створити власний clippy.toml, щоб виявляти випадкове використання «забороненого» або legacy-коду у великих проєктах.

🔹 A list of updates and changes to Rails Blocks — свіжі апдейти RailsBlocks: нові компоненти, покращення редактора, оновлення API та фікси для стабільної роботи.

🔹 marcoroth / herb — додано новий lightweight runtime для Ruby apps з реактивною моделлю даних та оновленою системою рендерингу компонентів.

🔹 ruby / json — вийшло оновлення з оптимізаціями продуктивності парсингу та невеликими фіксами для edge-case JSON-структур.

🔹 okuramasafumi / alba — додано покращення в серіалізації, нові DSL-можливості для ресурсів та оптимізовано швидкість рендерингу.

🔹 bkuhlmann / gemsmith — оновлення додало вдосконалений генератор гемів, кращі шаблони структури проєкту та нові lint-налаштування.

🔹 rhannequin / astronoby — додано нові астрономічні обчислення, покращено точність ефермерид і розширено API для роботи з небесною механікою.

🔹 ruby-grape / grape — оновлено підтримку Rails/Rack, виправлено edge-case баги роутингу та покращено DSL для версіонування API.

🔹 slack-ruby / slack-ruby-client — додано покращену підтримку Socket Mode, оновлено API під останні Slack endpoints і стабілізовано reconnect-логіку.

🔹 weppos / publicsuffix-ruby — оновлено базу публічних суфіксів та покращено продуктивність парсингу доменів.

🔹 gazay / gon — виправлено проблеми з передачою даних у Rails 7/8, покращено сумісність з імпортмапами та Turbo.

🔹 stripe / stripe-ruby — додано підтримку нових API версій Stripe, оновлено моделі ресурсів і покращено валідацію запитів.

🔹 shardlab / discordrb — оновлено API-підтримку для нових Discord gateway/event змін і покращено стабільність бота при reconnect’ах.

🔹 k1LoW / awspec — додано нові матчери для AWS-ресурсів, оновлено тести під актуальні сервіси та покращено сумісність з AWS SDK v3.

🔹 basecamp / kamal — вийшли фікси деплою, покращено роботу health-checks і оновлено підтримку Docker/Traefik у продакшн-середовищах.

🔹 felipecsl / wombat — оновлено механізм вебскрейпінгу, покращено парсинг DOM та стабілізовано роботу з нестандартними HTML-структурами.

🔹 pat / gutentag — додано фікси продуктивності та оновлено підтримку Active Record для більш надійної роботи з тегами.

🔹 mongodb / mongo-ruby-driver — оновлено підтримку MongoDB 7.x, покращено швидкість драйвера та розширено API для транзакцій і кластерів.

Цікаве

🔹 When Your Hash Becomes a String: Hunting Ruby’s Million-to-One Memory Bug — критичний баг у Ruby FFI: об’єкт Hash може перетворюватися на String після GC — детальний розбір, приклади та рекомендації.

🔹 Compiling a Call to a Block — глибокий dive у те, як MRI компілює виклики блоків: інструкції VM, стек та оптимізації.

🔹 Unless: The Ruby Way to Not Say No — свіжий погляд на Ruby-ідентичність: чому unless — не просто синтаксис, а стиль мислення (з прикладами, edge cases і best practices).

🔹 Eloquent Ruby, Second Edition — оновлене видання класичної книжки Russ Olsen: модернізовані приклади, актуальні Ruby-практики, оновлення під Ruby 3.x/4.0 та сучасний стиль написання коду.

🔹 Ruby And Its Neighbors: Smalltalk — Noel Rappin продовжує серію: що Ruby успадкував від Smalltalk — об’єктність, повідомлення, простоту моделі об’єктів.

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

🔹 Upgrade to Puma 7 and Unlock the Power of Fair Scheduled Keep-alive — Heroku показує, чому оновлення до Puma 7 дає значний приріст продуктивності: чесний розподіл запитів, кращий keep-alive, менше latency.

🔹 RSpec and `let!`: Understanding the Potential Pitfalls — стаття пояснює, як неправильно використане let у RSpec може призводити до неочікуваних побічних ефектів та важких для діагностики багів.

🔹 Context: the missing API in ruby logger — автор описує проблему з «context missing» у Ruby-логуванні та показує новий API для коректної передачі контексту в логер.

🔹 Top Ruby on Rails Hosting Providers for Your Apps in 2025 — огляд популярних хостинг-рішень для Rails: Heroku, Hatchbox, Render, Fly.io, DigitalOcean та інші — плюси, мінуси, підходящі кейси.

🔹 YARV’s Internal Stack and Your Ruby Stack — Pat Shaughnessy занурюється в нутрощі YARV: стекові фрейми, інструкції VM і як Ruby інтерпретує методи.

🔹 Deterministic Mesh Gradient Avatars in Rails — AvoHQ показує, як генерувати стабільні mesh-gradient аватари на Ruby: колірні палітри, Noise-генерація, хешування.

🔹 Improving Performance with load_async in Rails 8: A Deep Dive into Asynchronous Record Loading — аналіз, як load_async у Rails 8 дозволяє виконувати SQL-запити асинхронно для прискорення рендерингу сторінок.

🔹 Two products, one Rails codebase — RailsDesigner ділиться архітектурою мультипродуктового SaaS: feature flags, конфігурація брендів, кастомізація UI та узгоджені флоу.

🔹 Making race condition tests deterministic with Concurrent::CyclicBarrier and seam — Arkency показує, як робити тести на race condition передбачуваними: синхронізація потоків через CyclicBarrier, контроль станів і стабільність CI.

🔹 Hanami 2.3: Racked and Ready — Hanami отримав велике оновлення: нове ядро поверх Rack, покращена продуктивність, удосконалені інтерфейси контейнерів та підтримка сучасних Ruby-фіч.

🔹 The Tech Stack Behind Gusto’s Ruby on Rails Platform — Gusto ділиться своїм продакшен-стеком: Rails моноліт + сервісні компоненти, Sidekiq, Kafka, MySQL, Redis, strong CI/CD та безпека.

🔹 Rendering Samples with Showcase for Ruby on Rails — AppSignal пояснює, як за допомогою Showcase відображати приклади компонентів у Rails — корисно для дизайн-систем і живої документації.

🔹 The Hidden Dangers in Your Gemfile: Supply Chain Attacks in RubyGems — FastRuby розбирає типові проблеми Gemfile: старі версії, важкі залежності, implicit load, та як уникнути прихованих bottleneck’ів.

🔹 Inline editing with custom elements in Rails — RailsDesigner демонструє створення кастомного інлайн-редагування через Web Components без сторонніх JS-фреймворків.

🔹 Announcing YARD-Lint: Keep Your Ruby Documentation Solid — Mensfeld представляє інструмент для автоматичної перевірки YARD-коментарів: consistency, пропущені теги, формат та структурні помилки.

🔹 Rails 8 adds conditional allow_nil and allow_blank in model validations — Saeloun оглядає новий підхід у Rails 8: можливість динамічно визначати allow_nil: та allow_blank: через procs/умови.

🔹 Pretty SQLite Output Persistently — гайд, як зберегти форматування SQLite у терміналі назавжди: таблиці, ширина колонок, кастомні PRAGMA.

🔹 Compiling Ruby To Machine Language — Pat Shaughnessy продовжує серію: що відбувається між Ruby-кодом, YARV байткодом і реальною машинною інструкцією CPU.

🔹 Mastering Ruby’s Object Model and Metaprogramming in Rails — гайд по глибинній моделі об’єктів у Ruby та метапрограмуванню, включно з method_missing, define_method, monkey patching і DSL-підходами в Rails.

🔹 How to Create and Work With Date Objects in Ruby on Rails — Railscarma пояснює різницю між Date, Time, DateTime, роботу з часовими зонами, парсинг і форматування.

🔹 New in Rails 8.1: Bring Your Favorite Editor to Error Pages — нова фіча в Rails 8.1: можна відкривати помилки прямо у своєму редакторі (VS Code, Rubymine, Vim) з error-pages.

🔹 Rails makes error reporting tests easier in Rails 7.1 — Saeloun розбирає покращення в Rails 7.1 для тестів, що перевіряють помилки в контролерах / моделях — стабільніші та зручніші assertion-и.

🔹 Operating Rails: what about after you deploy? — Andre Arko розповідає про дисципліну підтримки: обслуговування, пріоритети, документацію, стабільність і довгострокові витрати.

🔹 Completing, Integrating, and Publishing Our Game with DragonRuby — AppSignal розповідає, як вони завершили й випустили гру на DragonRuby: інструменти, пайплайни, оптимізація та публікація.

🔹 Rails 8 enhances ActiveStorage::Blob#open to work without a block — Saeloun описує нову фічу: тепер blob.open можна викликати без блоку, що спрощує роботу з файлами та стрімами в ActiveStorage.

🔹 Process Utilization: How We Actually Track That — Judoscale показує, як правильно трекати CPU/IO навантаження Rails-процесів, чому «request queue time» інколи бреше та як це впливає на масштабування.

🔹 ​​Don’t Make Me Think Principle, Testing, and Intuitive Expectations — автор пояснює важливість тестування поведінки, яка здається «очевидною», але не гарантується кодом. Наголос робиться на тому, що інтуїція не замінює явних перевірок у тестах.

🔹 Debugging a Stack Overflow in Rails 7.2.1.1 — BigBinary розбирає причини stack overflow у Rails: рекурсивні асоціації, нескінченні callback-и, багнуті серіалізатори — і як їх ловити.

🔹 How to Clean Up Your Rails Logs: Ignoring Benign SQL Warnings — Saeloun пояснює, які SQL-попередження Rails ігнорує, як мапляться error codes, та коли варто піднімати винятки самостійно.

🔹 Top Open Source Rails CRM Solutions for Businesses 2026 — Railscarma робить огляд open-source CRM для Rails: Fat Free CRM, Rukawa, SuitCRM (інтеграції), їхні плюси та підходящі кейси.

🔹 How To Rev Up Your Rails Development with MCP — ​​Hashrocket показує, як підключити Model Context Protocol (MCP) для швидшої розробки: інтеграція зі штучним інтелектом, автогенерація та напівавтоматичні флоу.

🔹 Setting Up Rails 8 with MongoDB and Mongoid: Guide for 2026 — Railscarma дає повний гайд: встановлення MongoDB, конфігурація Mongoid, типи полів, асоціації та кращі практики у Rails 8.

🔹 Customizing Rails Migrations with Execution Strategies — стаття показує нову можливість Rails — використання execution strategies у міграціях, що дозволяє змінювати спосіб виконання SQL-операцій.

Відео

GoRails детально пояснює різницю між extend self, module_function та патернами модульної організації коду.

Подкасти

​​On Rails

Drifting Ruby

🔸 Failover Requests
🔸 Kamal Registry
🔸 Local CI
🔸 AI Commit Messages
🔸 Kamal with Non-Rails Apps

Remote Ruby

🔸 Managing Open Source with Nate Berkopec
🔸 Rails Business with Brendan Buckingham and Ryan Frisch
🔸 San Francisco Ruby Conference Recap

RWpod

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

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

👍ПодобаєтьсяСподобалось3
До обраногоВ обраному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

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