Ruby/Rails дайджест #15: ювілей Ruby, JIT у Ruby 2.6, DHH і серія відео On Writing Software Well

Всім привіт! У лютому відбулося багато чого цікавого. По-перше, Ruby виповнилося 25 років, про що написав Матц у своєму . По-друге, DHH виклав серію відео On Writing Software Well. У них DHH розбирає код Basecamp і розмірковує на цікаві теми, наприклад, використання callbacks для написання допоміжної логіки.

Почитати

Перші огляди JIT у Ruby

The Method JIT Compiler for Ruby 2.6 — в лютому в Ruby 2.6 з'явився JIT compiler. У статті автор ділиться першими враженнями від цієї реалізації.

Playing with Ruby's new JIT: MJIT — огляд реалізації JIT (just in time compiler), доданої в Ruby 2.6.

Ruby's New JIT — ще один огляд JIT у Ruby 2.6.

Ruby Concurrency: Building a Timeout Queue — побудова многопоточной черзі з обмеженням часу виконання в Ruby.

Ruby String Literals vs Value Objects. Overengineering? — приклад того, як Rails 5 API Attributes можна застосовувати для рефакторінгу антипаттерна Primitive Obsession.

Humming along — Analyzing RubyGems stats for 2017 — Infinum проаналізували екосистему Ruby в 2017: кількість нових створених гемов, завантажень фреймворків та популярних гемов.

Dig Deeper with Pry: Explore Ruby Internals — з недавніх пір в Pry можна переглядати джерело C-ідентифікаторів в Ruby.

TruffleRuby Native: Fast Even for Short Scripts — бенчмаркінг компіляції TruffleRuby, MRI і JRuby та інших реалізацій Ruby.

Goodbye ubygems — у версії Ruby 2.5 був видалений файл ubygems.rb, і це не помилка. Чому так сталося? Деталі в статті :)

Translations with Rails Jekyll and — Mike McQuaid розповідає, як вирішив проблему перекладу сайтів на GitHub pages.

Coming to Terms with the 'Prima Donna Method' Smell — розбір code smell'а Prima Donna Method у Ruby-коді.

Checking Postgres availability with pure Ruby — перевіряємо доступність Postgres на чистому Ruby.

Добірка від AppFolio

How Fast is Ruby 2.5.0? — AppFolio провели бенчмарк Ruby 2.5.0 і дізналися, наскільки нова версія швидше, ніж Ruby 2.4.3.

Benchmarking Ruby's Heap: malloc, tcmalloc, jemalloc — порівняння продуктивності різних класів (malloc, tcmalloc, jemalloc), що відповідають за виділення пам'яті в Ruby.

CRuby Memory Slots: See Them, Tweak Them, Make Them Fast — огляд використання слотів пам'яті в CRuby.

Для початківців Ruby-розробників

What Ruby taught me — початківець розробник Vinicius Brasil ділиться своїми позитивними враженнями від вивчення Ruby.

Як почати писати на Ruby on Rails: налаштування оточення, поради по коду та корисні геми.

Actionable advice to start learning to code — дуже докладна і цікава стаття з порадами, як почати програмувати. Всередині — історії з власного досвіду, списки корисних ресурсів і багато мотивації до дії.

Туторіали

Blockchain App with Ruby — кріптовалюти дали цього світу таку чудову річ, як блокчейн — технологію, яка дозволяє будувати захищені децентралізовані програми. За допомогою цього туториала ви теж зможете побудувати своє блокчейн-додаток на Ruby.

Testing React.js components with Jest in Rails+Webpacker+Webpack environment — докладний кейс з тестування компонентів React.js з допомогою Jest в середовищі Rails, Webpacker І Webpack.

Rustic Nil Handling in Ruby — коли в Ruby метод повертає nil, це може означати кілька сценаріїв, що може призвести до плутанини в коді. Розробник з HoneyBadger — Starr Horne пропонує вирішити цю проблему так само, як вона вирішена в Rust.

Gzip A File In Ruby — докладний туторіал по архівуванню .gzip файлів в Ruby за допомогою вбудованого Zlib модуля.

GraphQL server with Sinatra (Ruby) — Part 1 — перша частина по створенню GraphQL сервера за допомогою фреймворку Sinatra.

Speeding up Ruby with Shared Strings — Aaron Patterson розповідає, як прискорити Ruby із загальними строками.

Ruby on Rails: Running Tests Guard with and Docker — автор розповідає, як оптимізувати запуск тестів з Guard і Docker в Rails-додатку.

Building a Command-Line Interface with Ruby — туторіал по створенню command-line інтерфейсу на Ruby.

Goodbye Sprockets. Welcome Wepbacker 3.0 — простий гайд по переходу з Sprockets на Webpacker 3.0.

How to Separate Features for Different Organizations in a Rails App — у статті демонструється відразу три підходи до поділу фичей для різних організацій в SaaS-додатку на Rails.

How to use Query Objects to refactor Rails SQL-запити — в туториале пояснюється, як використовувати Query Objects для рефакторінгу SQL-запитів в Rails-додатку.

Добірка від AppSignal

Syntactic sugar methods in Ruby — як Ruby використовує синтаксичний цукор для більш зрозумілого і читабельного синтаксису.

Inspecting Data in Ruby — інструкція з дебаггингу з допомогою методу puts.

Debugging Exceptions in Rails — дебаггинг виключень в Ruby.

Добірка від Reinteractive

Action Cable for and Rails Angular JS 1.x — туторіал з налаштування серверної частини Action Cable для Rails-додатки та клієнтської частини Angular JS 1.x.

Wallaby: a newcomer in the admin interface market — Wallaby — альтернатива таким панелі адміністратора, як RailsAdmin і ActiveAdmin, з можливістю кастомізації. У статті наводиться покрокове керівництво по налаштуванню Wallaby.

Creating custom helper methods for the Rails console — туторіал по створенню кастомних helper методів для Rails-консолі.

Релізи

Rails

Rails 5.1.5 has been released — в середині лютого вийшла нова версія Rails 5.1.5. Деталі — в changelogs.

Parallel testing — у версії Rails 6.0.0

New Feature on Rails 5.2: Redis Cache Store — у версії Rails 5.2. з'явився Redis Cache Store.

Ruby

В Ruby 2.5 додали метод Hash#slice

Ruby 2.6.0-preview1 Released — довгоочікуваний реліз Ruby 2.6.0-preview1. З цікавого — імплементація JIT і значні поліпшення продуктивності.

RubyGems 2.7.5 — новий реліз включає в себе виправлення помилок.

Multiple vulnerabilities in RubyGems — огляд уязвімостей в RubyGems і версії, які піддаються їм.

Sinatra 2.0.1 is out! — а ще вийшла нова версія Sinatra, деталі — в changelogs.

Подивитися

Лютий присвячений не тільки JIT у Ruby 2.6, але і плейлісту з серій відео On Writing Software Well . DHH обіцяє розповідати, як створювати якісний софт.

Підбірка скрінкасти від GoRails

Rails 5.2 — Encrypted Credentials — дізнайтеся, як використовувати Encrypted credentials в Rails 5.2 замість secrets.yml.

Undo Sending like Button GMail — створюємо кнопку «Undo», як в GMail для скасування відправки повідомлень.

Building A Hosting Platform in Ruby — будуємо хостинг-платформу за типом HatchBox на Ruby.

RubyTapas

Two screencasts, two ways to eradicate Ruby nil values — два екрана і два різних способи усунути значення nil в Ruby.

Послухати

I added a Rails app to wrap the Ruby logic

Подкасти від RWpod:

Подкасти від The Ruby Rogues

RR 349: The Overnight Failure with Sebastian Sogamoso — подкаст з Sebastian Sogamoso, Ruby-розробником з CookPad. Sebastian розповідає про своїх фейлах на проектах і способи подолати страх перед невдачами.

RR 348: Continuous Automation — Chef, InSpec, and Habitat with Nathen Harvey and Nell Shamrell-Harrington — розмова Nathen Harvey і Nell Shamrell-Harrington, які працюють в Chef . Тема подкасту, як завжди, різноманітна — платформа Chef Automate, Chef ком'юніті, Continuous automation і багато іншого.

MRS 031: Jeremy Evans — провідні The Ruby Rogues спілкуються з Jeremy Evans, Ruby-розробником з 14+ роками досвіду. Тема подкасту — шлях Jeremy від C++ до Ruby, порівняння Rails і Sinatra і як Ruby змінювався протягом цих років.

Ruby Gems

Facebook-cleaner — скрипт, який видаляє весь старий контент з вашого профілю на Facebook.

Hm? — експериментальний гем, який надає ефективний, идиоматичный DSL для hash transformations в Ruby.

Random

Sandi Metz — автор книги Practical Object-Oriented Design in Ruby. Тепер всі його фанати можуть придбати футболку з написом «What would Sandi Metz do?»

Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на volodymyr.vorobiov@rubygarage.org . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.


? Попередній випуск: Ruby дайджест #14

Опубліковано: 02/03/18 @ 01:04
Розділ Різне

Рекомендуємо:

Лютий 2018 — финстрип, 59К, подвоївся за місяць
Проблема плинності кадрів, або Як утримати тих, кого навчив
Amazon купує стартап Ring з R&D-центром у Києві за $1 млрд
.NET дайджест #22: експериментальний фреймворк Blazor, асинхронні методи, Rider 2017.3
Як почати писати на Ruby on Rails: налаштування оточення, поради по коду та корисні геми