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:
- 05 випуск 06 сезону. Rails 5.2: Active Storage and beyond, Embedding Go into Ruby applications, Localer, Webpack demos та інше
- 06 випуск 06 сезону. Ruby 2.5 added Hash#slice method, Stimulus JS, Chiccocoin, Eloquent JavaScript та інше
- 07 випуск 06 сезону. Ruby's New JIT, Ruby 3?3, Ember 3.0, Parcel v1.6.0, Phaser 3.0, SingleCov, Face-verify.js, Blotter.js та інше
Подкасти від 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?»
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.
? Попередній випуск: Ruby дайджест #14
Опубліковано: 02/03/18 @ 01:04
Розділ Різне
Рекомендуємо:
Лютий 2018 — финстрип, 59К, подвоївся за місяць
Проблема плинності кадрів, або Як утримати тих, кого навчив
Amazon купує стартап Ring з R&D-центром у Києві за $1 млрд
.NET дайджест #22: експериментальний фреймворк Blazor, асинхронні методи, Rider 2017.3
Як почати писати на Ruby on Rails: налаштування оточення, поради по коду та корисні геми