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 — новий гем, що додає підтримку локальних
🔹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 показують, як налаштувати локальне
🔹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
Remote Ruby
🔸Blastoff Rails with Travis Dockter
🔸Who Owns RubyGems? Inside the Ruby Central Controversy
🔸Chris Is Back, Ruby Drama, Projects, and Parenthood
Для гарного настрою



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