С Новым годом и Рождеством, друзья!
Этот праздничный дайджест хочу начать с краткого обзора наиболее важных событий и релизов в мире Ruby/Rails.
Конечно, в дайджесте вы найдете и свежие материалы за декабрь. Несмотря на рождественские и новогодние праздники, сообщество Ruby выкатило множество релизов, в том числе стабильную версию Ruby 2.6 с JIT-компилятором и Ruby on Rails 5.2.2. В 2019 году выйдет Ruby on Rails 6 — обязательно посмотрите график его релиза. Также не пропустите подборку материалов о поддержке Ruby на сервисе AWS Lambda.
Еще спешу поделиться с вами новостью — с января автором и редактором дайджеста станет Кирилл Шевченко, Ruby/JS разработчик в RubyGarage и автор технического блога. Смело задавайте вопросы Кириллу и предлагайте идеи, как улучшить дайджест в комментариях.
А теперь давайте смотреть, чем же запомнился ушедший год?
Топ 2018
В начале годы вышла первая preview-версия Ruby 2.6, а в конце декабря состоялся релиз стабильной версии Ruby 2.6 с JIT-компилятором.
Ruby 2.2больше не поддерживается разработчиками.
В апреле команда разработчиков Ruby on Rails представила версию 5.2самого популярного фреймворка на Ruby.
Вышла версия v1.2.0 Ruby-фреймворка Hanami.
Состоялся релиз версий 2.0.2 и 2.0.3фреймворка Sinatra.
Проект Paperclip больше не поддерживаетсяразработчиками компании thoughtbot.
DHH представилфреймворк Action Text для Ruby on Rails 6.
Популярный тест-фреймворк RSpec был обновлендо версии 3.8.
Команда разработчиков GitHub обновилаприложение до Rails 5.2.1.
JRuby — популярный интерпретатор языка Ruby — теперь совместимс Ruby 2.5.
Почитать
Timeline for the release of Rails 6.0 — график релиза фреймворка Ruby on Rails 6.
Introducing Action Mailbox for Rails 6 — что такое фреймворк Action Mailbox, который войдет в Ruby on Rails 6.
Ruby 2.6 JIT — Progress and Future — о настоящем и будущем JIT-компилятора в Ruby 2.6.
Ruby Memoization and Alternatives — когда использовать мемоизацию в Ruby и какие альтернативы существуют.
Announcing Ruby build support for AWS SAM CLI — в инструмент AWS SAM CLI официально добавлена поддержка Ruby.
Using Scenic and SQL views to aggregate data — как использовать гем Scenic для работы с SQL views.
Check and Update a URL with Ruby — простой способ актуализировать старые URL с помощью Ruby.
Big on Heroku: Scaling Fountain without losing a drop — советы от Evil Martians по масштабированию приложения на Heroku.
Meet Stealth 1.1 — что нового в версии Stealth 1.1 — фреймворка для создания чатботов .
Recursion, Tail Call Optimization and Recursion — как оптимизировать хвостовую рекурсию в Ruby.
How to Reduce Memory Usage by Tuning Gemfile — как настроить Gemfile, чтобы снизить использование памяти в приложении на Rails.
Juggling Chainsaws at Machu Picchu: Metaprogramming in Ruby — автор показывает, как использовать метапрограммирование в Ruby.
Polymorphic Routes — освежаем в памяти, что такое polymorphic routing в Ruby on Rails.
Displaying, downloading and streaming files with Active Storage — полезная шпаргалка по использованию Active Storage в Rails.
Boosting the Development Environment with Vagrant and Ansible — как оптимизировать среду разработки с помощью Vagrant и Ansible.
A Weird and Wonderful Trip through Ruby’s Standard Library — обзор малоизвестных возможностей стандартной библиотеки Ruby.
Keeping your schema close to you with the ’annotate’ gem — как легко получить информацию о схеме базы данных при помощи гема Annotate.
Inheritance and Define_method — How to Make Them Work Together — как использовать наследование и метод define_method при помощи метапрограммирования.
Disassembling Rails — Template Rendering (2) — автор показывает, как фреймворк Ruby on Rails обрабатывает шаблоны.
Destroying an Association Marked as Read-Only in Rails — автор описывает интересный случай использования метода destroyed_by_association в Rails.
Benchmark: Deep directory structure vs. flat directory structure to store millions of files on ext4 — какую структуру файлов стоит выбрать — смотрим итоги бенчмарков.
How to cache Ruby gems or NPM dependencies on CircleCI 2.0 — учимся кэшировать гемы и NPM-зависимости при использовании CircleCI.
Подборка материалов об использовании Ruby на платформе бессерверных вычислений AWS Lambda:
- Announcing Ruby Support for AWS Lambda
- Using Ruby on AWS Lambda
- Ruby Sinatra on AWS Lambda
- How to build a serverless Twitter bot with Ruby and AWS Lambda
Подборка от Andy Croll
Write long strings with wiggly HEREDOCs — почему стоит использовать HEREDOC при создании длинных строк.
Always Force Booleans to be True or False — автор объясняет, почему булевые значения должны быть или true, или false.
Подборка от Appfolio Engineering
How Fast is Ruby 2.6.0preview3 for Discourse — разработчики Appfolio Engineering сравнили скорость работы Ruby 2.6.0preview3 в сравнении с Ruby 2.5.
Multiple Gemfiles, Multiple Ruby Versions, One Rails — автор делится опытом, как в Rails-приложении использовать разные версии Ruby и конфигурации гемов.
A Short Update: How Fast is Ruby 2.6.0rc1 — оцениваем скорость работы первой предрелизной версии Ruby 2.6.0.
Подборка от AppSignal
Don’t be mean: Statistical means and percentiles 101 — какие индикаторы производительности приложения выбрать.
Ruby gem 2.8: Container memory & JRuby on Alpine Linux support — что нового в версии 2.8 гема AppSignal.
Подборка от Arkency
Serverless Slack bot on Lambda with Ruby — создаем Slack-бота на Ruby при помощи сервиса бессерверных вычислений AWS Lambda.
Modeling passing time with events — автор делится опытом организации событийно-ориентированной бизнес-логики приложения.
Подборка от BigBinary
Passing current_user by default in Sidekiq — как настроить передачу current_user по умолчанию в Sidekiq.
Optimize loading multiple routes on Google map using B-spline — учимся оптимизировать маршруты доставки продукции при помощи B-сплайнов в приложении, которое использует Google Maps.
Rails 5 Active Record attributes API — разбираемся с Active Record attributes API в Rails 5.
Подборка от BoltOps
Official AWS Ruby Support for Jets Serverless Framework — serverless-фреймворк Jets теперь можно использовать с официальной поддержкой Ruby на сервисе AWS Lambda.
Jets Image Upload Carrierwave Tutorial: Binary Support — в этом туториале автор показывает, как импортировать изображения с помощью serverless-фреймворка Jets и библиотеки CarrierWave.
Jets Afterburner: Serverless Rails on AWS Lambda in 5 Minutes — как развернуть Rails-приложение на AWS Lambda при помощи Jets Afterburner.
Подборка от Jason Swett
How to Run Feature Specs Headlessly or Not Headlessly at Will — как тестировать функции приложения в браузере и вне его.
Testing Private Methods — как тестировать закрытые методы в Ruby.
Подборка от Mehdi Farsi
SOLID & Ruby in 5 short examples — принципы SOLID в Ruby на простых примерах.
Modules in Ruby: Part II — освежаем в памяти, что такое анонимные модули в Ruby.
Подборка от Ross Kaffenberger
Everything is Enumerated — как использовать to_enum с block methods в Ruby.
Why RSpec users should care about Rails system tests — почему стоит проводить системные тесты при работе с RSpec.
Подборка от RubyGuides
How to Use State Machines in Ruby — как использовать state machines в Ruby.
How to Run System Commands From Ruby — несколько способов команду из Ruby в терминале.
How to Use The VCR Gem to Improve Your Testing Suite — оптимизируем тестирование Rails-приложений при помощи гемов WebMock и VCR.
What is A REPL in Ruby?— освежаем в памяти, что такое REPL в Ruby.
How to Build Command-Line Applications with Ruby — учимся создавать приложения командной строки в Ruby.
MiniMagick Gem: How to Transform Images Using Ruby — как изменять изображения при помощи гема MiniMagick в приложениях на Ruby.
Подборка от RubyPlus
Kafka Producer and Consumer in Ruby using Docker — краткий туториал, как создать producer and consumer программу на Docker.
Ruby Kafka Messaging App using Docker — как подключить приложение на Ruby к Kafka при помощи Docker.
Getting Kafka Up and Running with Vagrant — пошаговый туториал, как создать приложение для обмена сообщениями на Ruby с помощью Kafka и Vagrant.
Подборка от Sam Phippen
Rack middlewares that have saved me literally hours of my life — авто на основе собственного опыта показывает преимущества использования промежуточного ПО Rack.
How I organise my VIM hotkeys — автор делится советами по работе с текстовым редактором VIM.
Туториалы
Building an API with Ruby and the Serverless Framework — создаем Ruby API при помощи Serverless Framework.
Deploying a Rails 5.2 PostgreSQL app on AWS Elastic Beanstalk — как развернуть приложение на Rails 5.2 и PostgreSQL на сервисе AWS Elastic Beanstalk.
Customizing Rails rake tasks — учимся настраивать Rake-задачи в приложении на Rails.
How to Use Ruby on Rails for Local SMTP Email Testing — в этом туториале автор показывает, как настроить SMTP-сервер в приложении на Rails.
How business transactions helped decouple Rails controllers at TextMaster — как сделать рефакторинг контроллеров в приложении на Rails.
How to Set Up Redirects in a Ruby Rack Application — как настроить переадресацию в Rails Rack приложении.
101: Law of Demeter — как устранить нарушение «закона Деметры» (Law of Demeter) на примере Ruby-приложения на фреймворке Sinatra.
Transparent compression of RabbitMQ messages with Sneakers — краткая инструкция, как ускорить работу RabbitMQ при помощи сжатия сообщений.
Релизы
Ruby 2.6.0 — релиз стабильной версии Ruby 2.6.0.
Rails 5.2.2 — вышла стабильная версия фреймворка Rails 5.2.2.
JRuby 9.2.5.0 — релиз версии 9.2.5.0 интерпретатора языка Ruby.
mRuby 2.0.0 — появилась версия mRuby 2.0.0 — реализации языка Ruby для встраиваемых систем.
RubyMine 2018.3.1 — популярная IDE RubyMine обновилась до версии 2018.3.1 (сборка 183.4588.71).
Passenger 6 — вышла стабильная версия 6.0 сервера приложений Passenger.
RubyGems 3.0.0 — релиз версии 3.0.0 менеджера пакетов RubyGems.
Послушать
The Bike Shed
181: Strong Types and a Functional Flair — ведущие и Joe Ferris — CTO компании thoughtbot — обсуждают интересных тем, в том числе сервис Apache Kafka и платформа RabbitMQ.
Ruby Rogues
- RR 391: Frontend Testing Like a Rubyist with Josh Justice — как гость подкаста применяет навыки тестирования в Ruby во frontend-разработке.
- RR 392: Crystal and Lucky with Paul Smith & Andrew Mason — участники дискуссии обсуждают созданный под влиянием Ruby язык программирования Crystal и его фреймворк Lucky.
- RR 393: Speculation on Frameworks with the Panelists — подкаст посвящен фреймворкам, которые используются в backend- и frontend-разработке.
- RR 394: Cables, Concurrency, and Ruby 3×3 with Vladimir Dem — в рождественском выпуске Ruby Rogues ведущие и гость подкаста обсуждают cables, concurrency, а также Ruby 3×3.
RWpod
- 48 выпуск 06 сезона. Announcing Ruby Support for AWS Lambda, TypeScript 3.2, Sneaker Generator, Progress-estimator и прочее
- 49 выпуск 06 сезона. Ruby 2.6.0-rc1, Truffleruby 1.0 RC10, Microsoft is building its own Chrome browser to replace Edge, Sharp, ForgJs и прочее
- 50 выпуск 06 сезона. Ruby 2.6.0-rc2, Mruby 2.0.0, Action Mailbox for Rails 6, GraphQL code generator, Matchit и прочее
- 51 выпуск 06 сезона. RubyGems 3.0.0, Ruby 2.6 JIT, Electron 4.0.0, React v16.7, Neural Network Knows When Cat Wants To Go Outside и прочее
Ruby on Rails Podcast
- 252: Confident Ruby on Rails Testing with Jason Swett — подкаст посвящен тестированию legacy-приложений на Rails.
- 253: Jets: Ruby Serverless Framework with Tung Nguyen — гость подкаста — Tung Nguyen — создатель serverless-фреймворка Jets для Ruby.
- 254: Ruby Support for AWS Lambda with Alex Wood — участники дискуссии обсуждают поддержку Ruby на сервисе AWS Lambda.
The Ruby Testing Podcast
020 — Josh Clayton of thoughtbot — гость подкаста — Josh Clayton из компании thoughtbot — делится опытом тестирования приложений, а также рассказывает о паттернах генерации данных для тестирования Rails приложений.
Remote Ruby
Accounting (?), Ruby 2.6rc1, Rails 5.2.2, AWS Lambda + Ruby, Stimulus Component Library — обзор последних новостей в мире Ruby от постоянных ведущих Remote Ruby Криса и Джейсона.
The Yak Shave
It’s not a Pyramid, it’s a Diamond — в этом выпуске Sam Phippen делится своей методикой тестирования приложений.
Посмотреть
RubyConf 2018 — подборка докладов и обсуждений с прошедшей в ноябре конференции RubyConf 2018.
Декабрьские выпуски GoRails, в которых ведущий продолжает серию о реализации встраиваемых JavaScript-виджетов в приложениях на Rails:
- Using Vuex with Forms in Rails
- Cross-origin Resource Sharing (CORS) with Rails
- Restricting Javascript Widgets to Registered Sites
Подборка платных скринкастов от Drifting Ruby в декабре:
- #162 Creating a Simple Slack Bot
- #163 Templating Ruby on Rails Applications
- #164 Policy Manager with GDPR Rails
- #165 Incoming Emails with Action Mailbox
Декабрьские выпуски платных скринкастов от Ruby Tapas:
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на kirill@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #24