Ruby Digest #89. Оновлення Ruby 3.3.9, JRuby 10.0, Structured Events, mini_i18n, RuboCop 1.79 і RailsConf

Привіт! Цього місяця в Ruby-світі відбулося чимало цікавого: стабільний реліз Ruby 3.3.9, нова версія JRuby 10.0.1.0, зручні новинки у RuboCop та Importmap Rails, гем mini_i18n для простішого перекладу, Structured Event Reporting System для Rails, а також особисті враження з RailsConf 2025. Додатково — гіди, інструменти й міркування для натхнення й продуктивності.

Новини

🔸 Ruby 3.3.9 Released — оновлення з виправленнями помилок у Ripper, IRB, RBS і TypeProf, а також оновленнями безпеки та стабільності.

🔸 June 2025 RubyGems Updates — оновлення з підтримкою експериментального режиму Bundler 4, підготовкою до релізів Bundler 2.7.0 і RubyGems 3.7.0, покращенням роботи з платформами для бінарних гемів.

🔸 3.7.1 Released — оновлення з виправленням регресій у RVM, покращенням обробки платформ, оновленням документації та автоматичним включенням Bundler 2.7.1.

🔸 RubyGems.org Policies Now Live — набули чинності нові правила для gem-ів: прозорість щодо спонсорства, політики безпеки, передачі доступу тощо. Обов’язкові для всіх нових і оновлених gems.

🔸 JRuby 10.0.1.0 Released — вийшла версія JRuby 10.0.1.0 — покращено сумісність із Ruby 3.2, оновлено бібліотеки та виправлено низку помилок.

Корисне

🔸 markets / mini_i18n — MiniI18n отримав оновлення, що спрощує конфігурацію шляхів до файлів перекладів та додає підтримку об’єднання кількох YAML-файлів.

🔸 crmne / ruby_llm — додано підтримку Ollama, покращено обробку помилок та введено новий синтаксис для #ask-запитів.

🔸 rubygems / rubygems — RubyGems тепер автоматично очищає кеш для dev-версій gem-ів під час встановлення або оновлення.

🔸 rubocop / rubocop — нові правила, покращена автокорекція та підтримка різних версій Ruby, зокрема вдосконалено правила для оголошення класів і модулів.

🔸 rails / thor — додано підтримку Ruby 3.3+, оновлено поведінку аргументів та документацію.

🔸 halostatue / color — оновлення класичного gem-а для роботи з кольорами в Ruby (RGB, HSL, HTML), тепер має сучасні CI-налаштування.

rails / importmap-rails — оновлено логіку preloading, сумісність з Rails 7.2 та покращена інтеграція з Hotwire.

🔸 AlchemyCMS / alchemy_cms — вийшли оновлення з покращеною підтримкою Rails 7.1+, оптимізацією коду та виправленнями помилок.

🔸 red-candle Native LLMs for Ruby — Ruby‑gem для запуску великих мовних моделей (Llama, Mistral, Gemma) прямо в Ruby‑процесі через Rust, без Python або зовнішніх сервісів.

🔸 Rails now allows associations to be marked as deprecated using deprecated: true — додано нову можливість з позначенням асоціацій як застарілих — з автоматичним логуванням використання.

Цікаве

🔸 RailsConf 2025 Recap — автор ділиться головними враженнями з RailsConf 2025: новини, ідеї та цікаві теми, що звучали зі сцени та в кулуарах.

🔸 Rails On-Premise... At RailsConf! — огляд доповіді про плюси та мінуси локального хостингу Rails-додатків (on-premise) та як це впливає на команди, які цінують контроль і передбачуваність.

🔸 Announcing Passive Queue: The Rails Background Job System That Transcends Processing — новий експериментальний підхід до обробки фонових задач у стилі «черга без виконання», що провокує дискусію: а чи завжди нам потрібен worker?

🔸 How 10 years of RailsConfs can inform the next 10 years of your career — Кевін Дж. Мерфі ділиться своїм досвідом участі в RailsConf протягом десяти років — про зміни в спільноті, тенденції та особисті враження.

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

🔸 The 60-Second Wait: How I Spent Months Solving the Ruby’s Most Annoying Gem Installation Problem — покрокова інструкція, як вирішити помилки під час інсталяції Kafka-клієнта на macOS з ARM‑процесором та Ruby 3.3, включно з оновленням залежностей і правильним середовищем.

🔸 Bundler v2.7: last release before Bundler 4 — новий реліз з покращеною продуктивністю, підтримкою останніх версій Ruby, виправленнями конфігурацій і новою командою для розгортання залежностей.

🔸 Sitemaps: A Quick SEO Win for New Websites — сучасний підхід до генерації sitemap-файлів у Rails‑проєктах, з підтримкою масштабованості та інтеграцією з базою даних.

🔸 Rails (might be) Getting a Structured Event Reporting System (and It’s Pretty Cool) — покроковий гайд зі створення структурованої системи звітів про події в Rails — для кращої прозорості, масштабованості та підтримки.

🔸 Brut: A New Web Framework for Ruby — ​​радикально новий Ruby вебфреймворк, без контролерів чи ресурсів: сторінки, форми та одноточкові хендлери.

🔸 Build a blog in 15ish Minutes with BrutRB — ​​прискорений туторіал, який показує, як за 15 хвилин створити робочий блог на основі фреймворка Brut, із прикладами та поясненнями.

🔸 Rails Designers: private community for Rails UI Engineers — анонс нового проєкту від RailsDesigner — платформи для дизайнерів, які працюють з Rails, шаблонами, компонентами та корисними ресурсами.

🔸 Adding an MCP server to a Rails app — команда Avo презентує серверну реалізацію Model Context Protocol (MCP) для Rails, яка дозволяє створювати власні інструменти для LLM прямо з вашої Rails-адмінки.

🔸 Solving Docker Compatibility Issues with Kamal and Ruby 2.2.2 — як Kamal допомагає розв’язати проблеми сумісності між Docker і Ruby. У блозі показано, як уникнути помилок, пов’язаних з різними версіями glibc, і забезпечити стабільне розгортання.

🔸 Hash Transformations in Ruby: index_by vs index_with — пояснення ключових відмінностей між index_by і index_with у Ruby, з практичними прикладами для кращого розуміння та вибору правильного методу.

🔸 AI Coding Agents Are Removing Programming Language Barriers — AI-агенти змінюють правила гри — вони дедалі частіше абстрагують вибір мови програмування, фокусуючи розробку на завданні, а не на синтаксисі.

🔸 Rails Solid Queue for Background Jobs — стаття пояснює, як розгорнути та налаштувати Solid Queue — новий job backend для Rails — у локальному середовищі, з корисними командами для моніторингу.

🔸 Advanced JIT compilers for Ruby: TruffleRuby and JRuby — стаття пояснює принципи роботи сучасних JIT-компіляторів у TruffleRuby і JRuby, порівнює їх ефективність та вплив на продуктивність Ruby-коду.

🔸 How to customize Rails I18n key suffixes like _md for Markdown — автор показує, як використовувати кастомні суфікси (наприклад, .md) для локалізаційних ключів у Rails, щоб забезпечити кращу організацію контенту, зокрема Markdown.

🔸 Fantastic Bugs and Where To Find Them — огляд підходів до пошуку складних і нестандартних багів у Ruby-проєктах: автор ділиться інструментами, прикладами та практичними порадами для відлагодження.

🔸 Hanami and the elephant in the room — блог‑запис про Rails, спонсорську кампанію та місію зробити Ruby-екосистему більш різноманітною та привабливою завдяки Hanami, dry‑rb і ROM.

🔸 ​​Breaking the Singleton: How to Reload Ruby Singleton Instance — стаття показує, як перезавантажити інстанс класу Singleton у Ruby — з прикладами, поясненнями та потенційними кейсами використання.

🔸 Understanding Ruby’s .. Range Operator in ActiveRecord Queries — пояснення, як Ruby-оператор «..» використовується у запитах ActiveRecord — з прикладами, нюансами та порадами щодо безпечного використання.

🔸 Hotwire components that refresh themselves — інструкція про те, як створити компоненти, що оновлюють себе самостійно за допомогою Hotwire — без зайвого JavaScript.

🔸 Polymorphic URLs with direct Router Helper — стаття демонструє, як використовувати direct маршрути в Rails для створення чистих і зручних поліморфних URL-ів, без зайвої магії та з кращою читабельністю коду.

🔸 Hexatetrahedral Rails — роздуми про архітектурні підходи у великих Rails-застосунках: коли доменні шари починають заважати, а не допомагати. Влучно, з гумором і практичними прикладами.

🔸 Stop memoizing Hash lookups in Ruby — Нітін Бекал ділиться корисною технікою мемоізації в Ruby за допомогою хешів, яка дозволяє уникати зайвих обчислень і покращити продуктивність.

🔸 Add a multi-step form/wizard to your Rails app — покрокове створення форм у Rails з використанням Turbo та Stimulus — без зайвої магії та з максимальною гнучкістю.

🔸 Git Rebase Exec — коротке пояснення, як використовувати git rebase —exec для запуску тестів або форматування під час кожного кроку ребейзу.

🔸 Smarter Use of Stimulus’ Action Parameters — Rails Designer показує підхід до створення параметрів дій у контролерах, що спрощує структуру коду й полегшує валідацію.

Відео

Девід Гейнмейєр Ганссон обговорює майбутнє програмування, Ruby on Rails, продуктивність, AI та продуманості дизайну — загалом глибока розмова про стандартні ідеї в Ruby‑світі.

RailsConf 2025 (Philadelphia) — повний архів доповідей з RailsConf: новинки фреймворку, практики продуктивної розробки та кращий досвід для Rails‑розробників.

Rails New by typecraft_dev — серія для Rails‑початківців (починаючи з базового застосунку до продуманого продукту) — ідеальна для тих, хто хоче стартувати з Rails.

Подкасти

​​

On Rails

Jean Boussier & IO-Bound Misconceptions
Nadia Odunayo & Scaling Rails for Millions of Users as a Solo Dev

Drifting Ruby

Dependent Select
Password Managers
Database Constraints
Worker Limits

Remote Ruby

Conferences, Hotwire Native updates, and a surprise guest!
Soham Parekh, Turbo Frames and AI Antics
Ruby Podcast Panel at RailsConf 2025
RailsConf 2025 Recap

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

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

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

На тому тижні дійшли руки подивитися

Rails New by typecraft_dev

. Мені то цікаво, бо десь-щось вже знаю, але всеодно є початківцем. Взагалі плюс, що на офіційному каналі RoR почали появлятися відео такого плану і те, що анонсуються наступні. Але переглядаючи цей туторіал склалось враження, що на моменті з додаванням Tailwind і до нього добралось «спочатку малюємо один овал, потім трохи більший, а далі за тим самим принципом отримуємо детально промальовану сову». І явно це ж не проблема тривалості відео, бо на CRUD операції воно було півгодинне, а тут трохи більше 5 хвилин. Але не це основне. Там є посилання на репозиторій з проектом де гілки відповідно до кожного відео. І ще в 5 епізоді typecraft в відео опустив внести деякі зміни, що так і залишились до кінця проекту та ці тепер вже баги не були в ньому пофіксені! Він забув додати параметр :active у контролер проектів — при створенні записується дефолтне значення з налаштувань БД, але його не вийде через форму відредагувати. А в модель Todo можна зберегти завдання з порожнім ім’ям, бо тут не додав такої ж валідації, як в проектах. Я про це написала коментар під відео, на нього так і не було ніякої реакції, тому форкнула репозиторій і зробила пул реквест з фіксами. Навряд-чи хтось щось поправить, але погано, що отакі навчальні відео для початківців не мають, хоча б поза кадром, самих базових тестів.

Світлано, дякуємо за уважний і змістовний коментар.
Цінуємо вашу залученість і увагу до деталей — фідбек такого рівня справді важливий, особливо коли йдеться про навчальні матеріали для початківців, це завжди корисно для спільноти.

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