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
Подобається дайджест? Підписуйтесь на автора, щоб отримувати сповіщення про нові публікації на пошту.
Немає коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарів