Ruby Digest #96: JRuby 10.0.3.0, RubyGems 4.0.7 і хвиля AI-інструментів

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

Новини

JRuby 10.0.3.0 Released — реліз JRuby 10.0.3.0 з фокусом на сумісність із Ruby 3.4 (10.0.3.x), оновленням stdlib до Ruby 3.4.5, апдейтом rexml (CVE) та кількома змінами в RbConfig і дистрибутиві документації.

4.0.7 Released — реліз RubyGems 4.0.7 і Bundler 4.0.7: невеликі покращення й фікси, зокрема зміни навколо повідомлення про system update, UX для входу з API key, а також Bundler 4.0.7 як default gem + кілька правок у плагінах/git-операціях і документації.

Корисне

elastic / elasticsearch-ruby — офіційний Ruby-клієнт для Elasticsearch, у лютому реліз v9.3.0 додав helper для base64-пакування dense_vector (зручно для bulk ingestion), оновив ES|QL Query Builder і підтягнув багато нових/оновлених API endpoint’ів.

mensfeld / pocketrb — «кишеньковий» фреймворк для Ruby AI-агентів/LLM-асистентів (канали типу CLI/месенджери, async-потік, контекст/пам’ять) в лютому отримав перший публічний реліз 0.1.0.

ruby / rubygems — тулінг для пакування/дистрибуції гемів; у лютому вийшли v4.0.6 (оновили vendored resolv до 0.7.0 і поставили Bundler 4.0.6 як default gem) та v4.0.7 (додали Gem.disable_system_update_message у setup.rb, покращили UX входу з existing API key і оновили Bundler до 4.0.7 як default gem).

yippee-fun / phlex — view-DSL для генерації HTML/SVG/CSV через Ruby-класи; 6 лютого вийшла серія патч-релізів (зокрема 2.4.1) із фіксом кількох обходів XSS-захисту (security advisory).

petergoldstein / dalli — Ruby-клієнт для Memcached; у лютому вийшов 5.0.0 з великими breaking changes: прибрали binary protocol і SASL (залишився лише meta protocol, потрібен memcached 1.6+), підняли мінімальну Ruby до 3.3+ та оновили OpenTelemetry семантику й трохи підкрутили продуктивність читання.

stefankroes / ancestry — гем для деревоподібних структур в ActiveRecord (materialized path), а у лютому вийшов 5.0.0: додали підтримку Ruby 3.4 і Rails 8.0, нові опції/методи, SQL-альтернативу для побудови depth-кешу та кілька оптимізацій/bugfix’ів (зокрема siblings більше не повертає self).

rubocop / rubocop — Ruby linter/formatter, і в лютому були патч-релізи 1.84.1–1.84.2 з фокусом на виправлення: краші/помилки в Layout/IndentationWidth, Style/NegativeArrayIndex, пріоритети exclude-патернів для коментарів opt-in cop’ів, некоректний autocorrect у Style/GuardClause, а також баги в autocorrect для Style/BlockDelimiters, Style/IfUnlessModifier та infinite loop у Layout/FirstArgumentIndentation.

modelcontextprotocol / ruby-sdk — офіційний Ruby SDK для Model Context Protocol (сервер/клієнт поверх JSON-RPC), а у лютому релізи 0.7.0–0.7.1 підтягнули сумісність зі спеками: виправили назви полів у Resource::Contents#to_h, почали повертати JSON-RPC protocol errors коректніше.

skryukov / typelizer — генератор TypeScript-типів із Ruby-серіалізаторів (Alba/AMS/Oj/Panko); у лютому релізи 0.8.0 → 0.9.2 додали підтримку transform_keys/key_transform, можливість ставити typelize перед def в Alba, і генерацію типів для Alba traits (+ with_traits в асоціаціях).

silva96 / log_bench — TUI-в’ювер для Rails-логів у реальному часі (HTTP/SQL/метрики) з фільтрами; у лютому вийшов v0.7.0 з покращеннями фільтрації та сортування.

rspec / rspec — основний BDD-фреймворк для тестів у Ruby; у лютому стартував перехід до RSpec 4 (вийшов rspec 4.0.0.beta1, а також rspec-support/mocks/expectations 4.0.0.beta1), плюс для Rails вийшов rspec-rails 8.0.3.

stripe / stripe-ruby — офіційний Ruby SDK для Stripe API; у лютому вийшли 18.4.0 з оновленням «pinned» API версії до 2026-02-25.clover, додали нові ресурси Reserve::Hold/Plan/Release і багато полів/параметрів, а також фікси для V2-серіалізації (включно з null).

premailer / premailer — гем для email’ів, який інлайнить CSS в HTML і може генерувати plain-text версію; у лютому реліз 1.28.0 прибрав підтримку «EOL» версій Ruby та додав cleanup! для звільнення пам’яті.

rmagick / rmagick — Ruby bindings для ImageMagick (обробка зображень); у лютому реліз 6.2.0 додав підтримку MSYS2 ImageMagick через pkg-config на Windows.

patvice / ruby_llm-mcp — інтеграція Model Context Protocol (MCP) для Ruby/RubyLLM (tools, auth, транспорти, підключення до MCP серверів); у лютому v1.0.0 зафіксували «production-ready» базу: адаптерний підхід, підтримка оновлень протоколу, суттєво прокачали OAuth і надійність транспортів, додали перевірки для JRuby в CI.

rage-rb / rage — сучасний Ruby web/API фреймворк з fiber-based runtime і фокусом на просту інфраструктуру; у лютому 1.20.1 виправив ініціалізацію конфігурації в after_initialize, а 1.21.0 додав Cable-можливості (RSpec helpers, stream_for/broadcast_to), skills CLI та покращення логера/контексту.

Цікаве

The Cost of Leaving a Software Rewrite «On the Table» — про приховану ціну «підвішеного» рішення щодо переписування: поки rewrite ніби планується, але не стартує, команда перестає довіряти поточній кодовій базі й уникає нормальних інвестицій у підтримку/рефакторинг.

The Cost of Change in Software — есе про те, чому «вартість змін» у проєкті зростає, як помічати тертя в коді, і як балансувати між технічним боргом та надмірним ускладненням архітектури.

300 Days of RuboCop — практична історія впровадження RuboCop у дуже великий легасі-код (порядку мільйона рядків): як рухатися малими кроками, не зламати команду й довести «лінтеризацію» до робочого стану.

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

Rails Multi-Tenancy — практичний розбір підходів до реалізації багатокористувацької архітектури в Rails: ізоляція даних, структурування застосунку та типові помилки.

Ruby Evolution — наочна історія розвитку Ruby: ключові зміни мови, синтаксису та можливостей від ранніх версій до сучасних релізів.

Time to Migrate from Heroku — покроковий підхід до міграції застосунку з Heroku на власну інфраструктуру або інші платформи з урахуванням залежностей і сервісів.

AI agents in Ruby: Why is it so easy? — пояснення, чому створювати AI-агентів у Ruby відносно просто: мінімум шаблонного коду, зручна інтеграція з LLM та гнучка архітектура.

Build a Resumable CSV Import with ActiveJob::Continuable — підхід до імпорту CSV у Rails, який можна безпечно відновлювати після збою: прогрес, повторний запуск і контроль стану виконання.

RubyLLM 1.12: Agents Are Just LLMs with Tools — коротко пояснює, що «агенти» в RubyLLM — це LLM, які вміють викликати ваші Ruby-інструменти (tools), і показує новий підхід/DSL у версії 1.12 для опису й перевикористання агентів у коді.

Evaluating LLM prompts in Rails — про те, як системно оцінювати промпти/моделі для AI-фіч у Rails, бо «табличок» швидко стає недостатньо, коли міняються моделі, ціни й параметри, і треба відтворювані порівняння.

Speeding Up PostgreSQL Full-Text Search with Persistent TSVectors — гайд про те, як зробити FTS у Postgres швидшим: не обчислювати tsvector щоразу в запиті, а зберігати його в окремій колонці та індексувати (GIN), щоб пошук працював стабільно швидко на великих таблицях.

Ruby Is the Best Language for Building AI Apps — аргументація, чому Ruby добре підходить для застосунків з AI: швидка розробка, простий код, зручна інтеграція з LLM та «склейка» бізнес-логіки навколо моделей.

Killing IDORs in Rails Applications: Make the Database Say «No» By Default — стаття про те, як зменшити ризик IDOR-вразливостей у Rails не «ще одним authorize!», а зміною підходу: зробити так, щоб застосунок/запити за замовчуванням повертали лише дані, доступні поточному користувачу.

Ruby Skills: Teaching Claude Code About Ruby’s Tooling And Ecosystem — як «навчити» інструменти для кодування Ruby-реаліям (версії Ruby, менеджери версій, залежності), щоб вони менше помилялися з типовими діями на кшталт запуску тестів і встановлення гемів.

Instrumenting Code Using Prism and the Ruby Abstract Syntax Tree — глибший розбір Prism і дерева синтаксису Ruby: як на основі розбору коду будувати інструментацію/спостережуваність, аж до прикладів із підміною/обгортанням виконуваного коду.

Using Conductor.build with Ruby on Rails — як підключити Conductor до Rails для керування та спостереження за фоновими процесами/виконанням задач: запуск, стан, журнали та зручна робота з виконанням із одного місця.

Introducing Upright: An Open Source Synthetic Monitoring System — 37signals відкрили Upright: синтетичний моніторинг як Rails-рушій, який запускає перевірки з різних локацій, збирає метрики та віддає їх у Prometheus для сповіщень і графіків.

props_template 1.0: A high performance, more opinionated jbuilder replacement — високопродуктивна, більш «визначена» альтернатива Jbuilder: шаблони для JSON без зайвої динаміки, з акцентом на швидкість і передбачуваність структури відповіді.

From 3 queries to 1 with Rails upsert — як звести типову схему «знайти → створити/оновити → оновити зв’язки» до одного запиту через upsert, зменшивши навантаження на базу й ризик перегонів.

Pluggable Garbage Collectors in Ruby: Exploring the New Modular GC API — про новий модульний інтерфейс збирача сміття в Ruby: навіщо відокремлювати GC від віртуальної машини і що це може відкрити для експериментів та продуктивності.

Upgrading from Rails 7.2 to Rails 8 — The Latest and Greatest — практичний маршрут оновлення з Rails 7.2 до Rails 8 з акцентом на спрощення інфраструктури (Solid Queue/Cache/Cable як варіанти без Redis) і використання вбудованої автентифікації замість Devise для простих випадків.

Building a RAG Tool in Ruby 4: What Actually Happened — автор показує, як зібрав RAG-інструмент на Ruby, який підтягує контекст з Jira/Confluence/GitHub перед стартом роботи, з фокусом на просту архітектуру й мінімум залежностей.

How We Fixed YAML Comment Preservation in Ruby (And Why We Sponsored It) — Discourse розповідає, як вони проспонсорили зміни в Ruby-інструментах роботи з YAML, щоб під час програмного редагування файлів коректно зберігалися коментарі.

Відео

Building CreatorSignal: Rails Auth & Deploy from Scratch — повна сесія розробки Rails 8.1 застосунку з нуля з використанням Claude Code: планування логіки автентифікації користувачів (Plan Mode), TDD, автоперевірка коду та налагодження CI.

Подкасти

Drifting Ruby

Claude Code — про використання Claude Code у щоденній Ruby-розробці: генерація коду, рефакторинг, тести та інтеграція AI-помічника у робочий процес.

Ratatui — випуск про створення інтерактивних інтерфейсів у терміналі на Ruby за допомогою Ratatui: компоненти, розмітка та організація складніших CLI-застосунків.

Rate Limit Plans — епізод про реалізацію обмежень на використання функцій у SaaS: як будувати тарифні плани з лімітами запитів/дій у Rails і контролювати їх виконання.

Debounce — матеріал про реалізацію debounce у вебзастосунках на Rails: як зменшити кількість запитів і уникнути зайвих викликів під час введення даних або частих подій.

Remote Ruby

Kevin Newton on Ruby & Python, Prism, Psych-Pure, and Exreg — розмова з Кевіном Ньютоном про розвиток Ruby, парсер Prism, бібліотеку Psych, експерименти з чистими реалізаціями інструментів і порівняння підходів Ruby та Python до екосистеми та мови.

Kisses From Andrew, the Ruby Gala & Conference Workshops — обговорення останніх новин спільноти, враження від Ruby Gala та розмови про конференційні воркшопи, їхній формат і практичну користь для розробників.

Bridge Components, Swift UI and more with Joe Masilotti — розмова про поєднання Rails і нативної мобільної розробки: Bridge Components, SwiftUI та підхід до створення застосунків, де Ruby-бекенд працює разом із iOS-інтерфейсом.

LiveComponent with Cameron Dutro — обговорення LiveComponent — бібліотеки для Rails/ViewComponent, яка додає стан і більш інтерактивні UI-оновлення через Hotwire/Stimulus з мінімумом JavaScript. Говорять про те, коли її зручно використовувати, які задачі вона вирішує та як вона вписується поруч із Turbo.

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

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

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