Ruby/Rails дайджест #28: важные обновления для нескольких версий Ruby on Rails, релиз Ruby 2.5.5 и 2.6.2
Всем привет! Начнем с того, что команда разработчиков Ruby on Rails выкатила ряд обновлений, которые устраняют уязвимости в версиях 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1 и 6.0.0.beta3. Также сообщество Ruby продолжает изучать функциональные особенности фреймворка Ruby on Rails 6 (обратите внимание на подборку статей от BigBinary).
Тренды в сообществе Ruby
- В Ruby on Rails обнаружены уязвимости, и команда разработчиков рекомендует как можно скорее установить обновления.
- Юкихиро «Matz» Мацумото отметил, что крепкое сообщество формируется только вокруг работающего программного продукта.
- По мнению Noah Gibbs, последние версии Ruby, а именно 2.5 и 2.6, стабильнее, чем предыдущие.
- Ruby 2.6 содержит на 10 тыс. массивов меньше, чем версия 2.5.
Релизы
Rails 5.2.3 — представлена версия 5.2.3 фреймворка Ruby on Rails.
Rails 4.2.11.1, 5.0.7.2, 5.1.6.2, 5.2.2.1, and 6.0.0.beta3 — команда разработчиков Rails выкатила ряд обновлений, в которых исправлен ряд серьезных уязвимостей.
Rails 5.1.7 — вышла стабильная версия Rails 5.1.7.
Ruby 2.6.2 — релиз патч-версии Ruby 2.6.2.
Ruby 2.5.5 — новый патч Ruby 2.5.
Jekyll 4.0.0.pre.alpha1 — вышла первая альфа-версия инструмента Jekyll.
Webpacker 4.0.2 — популярный гем Webpacker был обновлен до версии 4.0.2.
Почитать
What causes Ruby memory bloat? — в чем причина чрезмерного использования памяти приложениями на Ruby.
March 2019 Security Advisories — свежий список уязвимостей менеджера пакетов RubyGems.
Testing Ruby on Rails Migrations — как тестировать миграции данных.
Do you really know public, private and protected in Ruby? — детальный разбор public, private и protected методов в Ruby.
How (not) to integrate Elasticsearch testing with RSpec — автор делится опытом написания тестов с помощью RSpec в приложении, использующем Elasticsearch.
Ruby Trickery — интересные кейсы применения Ruby от Ryan Bigg.
Solving Slack-Side Disconnects in slack-ruby-client — как решить проблему потери соединения Slack-ботами на Ruby при использовании slack-ruby-client.
Why I Believe Rails is Still Relevant in 2019 — автор перечисляет причины, почему Ruby on Rails остается востребованным инструментом в 2019 году.
Building Autocomplete With DynamoDB and Lambda — как реализована функция автозаполнения ключей в сервисе Honeybadger.
Ruby 2.7 — Numbered Parameters — в Ruby 2.7 будут добавлены numbered parameters; что это и как их использовать.
Using Que instead of Sidekiq — автор делится опытом использования инструмента Que вместо Sidekiq для управления фоновыми задачами.
Cables vs. malloc_trim, or yet another Ruby memory usage benchmark — еще один бенчмарк использования памяти в Ruby.
An RSpec time issue (and it’s not due to timezones) — автор описывает проблему, связанную с тестом, который не проходил только в определенное время суток.
Function/Method look up in Elixir/Ruby — автор сравнивает реализацию поиска функций и методов в Elixir и Ruby.
A Deep Dive into Routing and Controller Dispatch in Rails — детальный разбор маршрутизации в Rails.
New features in Rails 6: Multiple databases, parallel tests, Action Mailbox and more — обзор новых функций в Ruby on Rails 6.
How we Built a Highly Performant App with Ruby on Rails and Phoenix — как создать высокопроизводительное приложение, работающее на основе Ruby on Rails / Ruby и Phoenix / Elixir.
A Deep Dive into TensorStream — краткий гайд по основам фреймворка TensorStream для машинного обучения на Ruby.
Seven Ways to Fortify Your Application — семь способов обеспечить стабильную работу приложения.
Enumerating over large datasets in Ruby — как работает перечисление крупных объемов данных при помощи модуля enumerable в Ruby.
Для новичков
Ruby’s Many CLI Option Flags & How To Use Them — как использовать option flags при работе в командной строке.
How to Use AJAX With Ruby on Rails — подробный разбор, как применять AJAX в Ruby on Rails.
How to Tell Your Ruby Program to Stop Running Early — как остановить выполнение программы на Ruby.
Understanding Ruby: Scope & Binding Objects — области видимости в Ruby.
Value objects in Ruby — что такое value objects в Ruby.
How to React on Rails — как подключиться React к приложению на Ruby on Rails.
Securely transfering files to server — инструкция, как безопасно передать файлы на сервер.
Quick and easy admin options — какие инструменты в арсенале Ruby-разработчиков помогают быстро реализовать функционал администрирования.
Advanced Searching of Emails using ElasticSearch and Rails 5.2 — инструкция, как реализовать расширенный поиск электронных писем при помощи ElasticSearch в Rails 5.2.
A Rails testing «hello world» using RSpec and Capybara — с чего начать тестирование приложения на Rails.
Подборка от Andy Croll
Don’t use instance variables in partials — почему не стоит использовать instance variables в частичных представлениях (partial views).
Protect your sign up form with Rack::Attack — как защитить страницу регистрации при помощи Rack::Attack.
Подборка от Appfolio Engineering
Ruby Register Transfer Language — But How Fast Is It on Rails? — бенчмарки производительности Ruby с использованием Register Transfer Language.
Benchmarking Hongli Lai’s New Patch for Ruby Memory Savings — насколько эффективен патч для сокращения использования памяти в Ruby.
Подборка от AppSignal
Ruby’s Hidden Gems, StringScanner — как использовать гем StringScanner для парсинга строк.
Object Marshalling in Ruby — что такое marshalling и как использовать модуль Marshall в Ruby.
Подборка от Arkency
Optimizing test suites when using Rails Event Store — как оптимизировать тесты при использовании Rails Event Store.
A scary side of ActiveRecord’s find — автор на примерах описывает сценарий, при котором метод #find в ActiveRecord демонстрирует некорректное поведение.
Подборка от BigBinary
MJIT Support in Ruby 2.6 — что такое JIT-компилятор в Ruby 2.6.
Цикл статей о Ruby on Rails 6:
- Rails 6 adds negative scopes on enum — в Rails 6 добавлена возможность использования negative scopes в значениях перечисляемого типа.
- Rails 6 adds ActiveRecord::Relation#touch_all — как использовать метод #touch_all в Rails 6.
- Rails 6 adds delete_by and destroy_by as ActiveRecord::Relation methods — автор показывает, как использовать методы #delete_by и #destroy_by в Rails 6.
- Rails 6 shows unpermitted params in logs in color — в Rails 6 сильные параметры выделяются цветом.
- Rails 6 changed ActiveRecord::Base.configurations result to an object — в Rails 6 ActiveRecord::Base.configurations возвращает не hash, а объект.
- Rails 6 raises ActiveModel::MissingAttributeError when update_columns is used with non-existing attribute — в Rails 6 метод #update_columns вызывает ошибку MissingAttributeError, если атрибут не найден.
- Rails 6 adds create_or_find_by and create_or_find_by! — в Rails 6 добавлены методы create_or_find_by и create_or_find_by.
- Rails 6 adds ActiveModel::Errors#slice! — в Rails 6 добавлен метод #slice!, применимый к ActiveModel::Errors.
- Rails 6 shows routes in expanded format — в Rails 6 маршруты обработки запросов отображаются в более удобном формате.
Подборка от BoltOps
Kinesis and AWS Lambda with Ruby on Jets — как подключить Kinesis Events к функциям AWS Lambda при помощи фреймворка Jets.
DynamoDB Stream Events and AWS Lambda with Ruby on Jets — автор рассказывает, как подключить DynamoDB Stream Events к функциям AWS Lambda при помощи фреймворка Jets.
Подборка от Igor Springer
Why don’t we validate controller parameters? — зачем и как валидировать параметры контроллеров.
How Ruby 2.6 allowed me to do another open source contribution — автор делится опытом участия в open-source проектах на примере коммита в Ruby 2.6.
Подборка от Jason Swett
Sometimes it’s better for tests to hit the real API — автор на примере собственного опыта показывает, почему тесты лучше прогонять на работающем API.
Code smell: long, procedural background jobs (and how to fix it) — почему важно писать тесты для фоновых задач.
Подборка от reinteractive
Working on inherited code bases — советы по работе с legacy-кодом.
How to craft a feature the right way — автор делится подходом к разработке фичей приложения.
Подборка от Scott Watermasysk
Proxying Requests To Heroku Via Caddy Server — инструкция, как перенаправлять запросы приложению на Heroku через сервер Caddy.
Multiple Heroku Environments — автор делится опытом работы с различными средами на Heroku.
Подборка от thoughtbot
Ruby under the influence [of Scala] — на основе собственного опыта, автор сравнивает, как реализованы некоторые функции в Ruby под влиянием Scala.
Services are Not a Silver Bullet — автор говорит о недостатках SOA-архитектуры в приложениях.
Туториалы
CI/CD for Microservices on DigitalOcean Kubernetes — как настроить CI/CD для микросервисов при помощи Docker и DigitalOcean Kubernetes на примере Ruby-приложения на фреймворке Sinatra.
How to use Docker Compose for Rails development: Do not bundle install in Dockerfile.dev — инструкция, как использовать Docker Compose в разработке приложений на Rails.
How to Build a Dynamic Website Using Google Sheets and Sinatra — как создать веб-приложение при помощи Google Sheets API и фреймворка Sinatra.
Profile Ruby & Rails Apps With rbspy in RubyMine — инструкция, как выполнить профайлинг приложений на Ruby при помощи инструмента rbspy в IDE RubyMine.
Using ActiveStorage in Rails API-apps — краткий гайд по использованию ActiveStorage в API на Rails.
How to download image files in Ruby — как реализовать функцию скачивания изображений при помощи open-uri и Down.
Гемы
StoreModel — библиотека позволяет манипулировать JSON-атрибутами как моделями ActiveRecord.
Rubyfmt — инструмент для форматирования кода на Ruby.
Himl — язык разметки на основе HTML.
Sidekiq statistic — гем для отображения статистики работы Sidekiq-воркеров.
Truemail — конфигурируемая библиотека для валидации адресов электронной почты.
Книги
Rails Testing for Beginners — Jason Swett выпустил пошаговый гайд о тестировании приложений на Rails.
Конференции
RubyKaigi 2019 —
RubyConfBY 2019 — 6 апреля пройдет конференция RubyConfBY.
RubyHack 2019 — 4 и 5 апреля в городе Sandy (США) проводится конференция RubyHack.
Ruby Wine — 13 апреля в Кишиневе пройдет конференция Ruby Wine.
Послушать
The Bike Shed
- 189: It’s Gonna Work, Definitely, No Problems Whatsoever — участники дискуссии обсуждают тестирование сторонних API, использование исключений и прочее.
- 191: Open Source is Created By Humans (Devon Zuegel) — подкаст посвящен созданию и поддержке ПО с открытым исходным кодом.
- 192: I Don’t Want to Think That Hard — основная тема выпуска — функциональное программирование.
Ruby Rogues
- RR 402: Ruby 2.6.0 Bugs, Kafka, and Karafka — детальный обзор фреймворков Kafka и Karafka.
- RR 403: Rails Needs Active Deployment — участники дискуссии обсуждают сложность процесса развертывания приложения на Rails.
- RR 404: Ruby Bindings & Extensions With FFI — основная тема выпуска — Ruby bindings — что это, когда их использовать, а также в чем преимущества и недостатки.
- RR 405: Rubymotion with Lori Olson — подкаст посвящен IDE RubyMotion, которая позволяет писать кросс-платформенные приложения на Ruby.
RWpod
- 09 выпуск 07 сезона. Rails 6 adds support for timezones to Active Job, .dev for all, renchKiss.js, JavaScript SEO и прочее
- 10 выпуск 07 сезона. Webpacker 4.0.2, Storybook 5.0, Rubygems: March 2019 Security Advisories, Mruby/c, RFS и прочее
- RWPod Кафе 9: Katrina Owen
- 11 выпуск 07 сезона. Ruby 2.6.2, Rails 6.0.0.beta3, React Native 0.59, CKEditor 5 v12.0.0, Firefox Send и прочее
- 12 выпуск 07 сезона. React Router v5, React-Redux v7.0.0-beta.0, Cables vs. malloc_trim, Helix, Lamby, Flexulator, DropCSS и прочее
Ruby on Rails Podcast
- 263: Abstractions and Generalist Strategy with Sarah Withee — гость подкаста делится советами, как быть хорошим спикером на конференциях.
- 265: Rails 6 Showcase Showdown with Edouard Chin — выпуск посвящен новинкам в Ruby on Rails 6.
Remote Ruby
- Joined by Tim Riley — гость подкаста — один из ведущих разработчиков dry-rb Tim Riley.
- Joined by Javan Makhmali and Sam Stephenson — в этом выпуске гости подкаста рассказывают о своем опыте в программировании, а также о работе в Basecamp.
- Joined by Avdi Grimm — гость выпуска — известный Ruby-программист и ведущий скринкастов RubyTapas Avdi Grimm.
- Joined by Jesus Castello — участники дискуссии обсуждают обучение Ruby, а также затрагивают многие интересные темы, в том числе новые функции в Rails 6.
Ruby Testing
- 023 — Chris Toomey, Development Director at thoughtbot — ведущий и гость подкаста обсуждают подход test-driven development (TDD).
- 024 — Kent Beck, Author of Test-Driven Development: By Example — в гостях у ведущего Kent Beck — автор книги Test-Driven Development by Example.
Посмотреть
Стримы от Антона Давыдова:
- Event sourcing: events, event store, projections (part 1) — стрим по теме event sourcing от 27 марта.
Мартовские выпуски платных скринкастов GoRails:
- Strong Passwords with HaveIBeenPwned — как проверить, безопасны ли пароли пользователей, при помощи HaveIBeenPwned Password API.
- How to use ActionText — знакомство с фреймворком ActionText в Ruby on Rails 6.
- @mentions for Users with ActionText in Rails 6 — как упоминать пользователей при помощи @mentions во фреймворке ActionText.
- User Onboarding Progress Bar — автор показывает, как реализовать функционал адаптации пользователей в приложении на Rails.
Подборка платных скринкастов от Drifting Ruby в марте:
- #175 What’s New in Rails 6 — обзор новых функций в Rails 6.
- #176 Ecommerce Store with Solidus — как создать онлайн-магазин на платформе Solidus.
- #177 Interview with Jesus Castello — интервью с Jesus Castello о фреймворке Roda.
- #178 Using Webpacker in Rails 6 — советы по использованию Webpacker в Rails 6.
- #179 Creating a Gem From Existing Code — как вынести определенную бизнес-логику Rails-приложения в отдельный гем.
Подборка платных скринкастов RubyTapas в марте:
- #567 Serverless Ruby with AWS Lambda — как создать serverless-приложение на Ruby на платформе AWS Lambda.
- #568 Polymorphic Attributes in Rails — Part 1 — как использовать кастомные атрибуты, чтобы загружать и хранить структурированные данные в Rails.
- #569 Polymorphic Attributes in Rails — Part 2 — как работать с атрибутами, которые могут использовать несколько типов данных.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #27