Всем привет! В феврале произошло много чего интересного. Во-первых, 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 можно просматривать источник
TruffleRuby Native: Fast Even for Short Scripts — бенчмаркинг компиляции TruffleRuby, MRI и JRuby и других реализаций Ruby.
Goodbye ubygems — в версии Ruby 2.5 был удален файл ubygems.rb, и это не опечатка. Почему так произошло? Детали в статье :)
Translations with Rails and Jekyll — 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 with Guard 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-queries — в туториале объясняется, как использовать 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 Rails and 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 Button like 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?»
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #14