Ruby/Rails дайджест #18: релизы JRuby 9.2.0.0 и Passenger 5.3.1, закрытие проекта Paperclip, вступление в силу GDPR

Привет всем! Май был чрезвычайно насыщен новостями и событиями в Ruby-сообществе.

Прежде всего, в мае было несколько релизов, включая JRuby 9.2.0.0, Passenger 5.3.1 и RubyMine 2018.2 EAP. Также компания Thoughtbot объявила о закрытии проекта Paperclip. Кроме того, в конце мая в странах ЕС вступили новые правила защиты персональных данных (GDPR), которые стоит учитывать при разработке приложений.

Почитать

Deprecating Paperclip — команда Thoughtbot прекращает работу над проектом Paperclip.

Introducing support for Amazon S3 Select in the AWS SDK for Ruby — AWS SDK для Ruby теперь поддерживает Amazon S3 Select. Узнайте, как его настраивать.

TestProf II: Factory therapy for your Ruby tests — оптимизируем тестирование приложений на Ruby с помощью TestProf — набора для профилирования и оптимизации автотестов.

Rails 5.2: ActiveStorage highlight — подробный разбор Active Storage в Rails 5.2.

New Class Naming Rules in Ruby — статья о новых правилах именования классов в Ruby 2.6.

Building ruby with jemalloc — автор показывает, как снизить использование памяти приложениями на Ruby при помощи jemalloc.

First Steps with Sinatra as a Rails Developer — Part 2 — вторая статья из цикла о создании приложений на Ruby с помощью фреймворка Sinatra; автор показывает, как создать full-stack приложение.

Improved YAML Support in the Updated RubyMine 2018.2 EAP — улучшенная поддержка YAML в обновленной RubyMine 2018.2 (сборка 182.2574.11).

PRPL on Rails Part 3: Service Workers — заключительная часть цикла о том, как паттерн PRPL помогает ускорить работу Rails-приложений; эта статья посвящена кешированию при помощи service workers.

The Big Friendly Errorpage — новая форма сообщения об ошибке в сервисе Passenger.

Ruby on Rails vs PHP — статья поможет начинающему разработчику сделать выбор между PHP и Ruby on Rails.

Finding slow ActiveRecord queries with Scout — находим медленные запросы в ActiveRecord c помощью Scout.

The recommendation of structured logging and the reason I have made Ougai for Ruby — чем полезны структурированные журналы (structured logs).

Ruby’s Rack Push: Decoupling the real-time web application from the web — как снизить связанность приложения при помощи Rack Push в Ruby.

Ruby MethodFinder is still alive — как Method Finder в языке Smalltalk вдохновил его написать гем для реализации данного функционала в Ruby.

How To Avoid The Ruby Class Variable Problem — читайте, как избежать проблемы с переменными класса (class variables) в Ruby.

Does operator overriding exist in Ruby? — поддерживает ли Ruby переопределение оператора.

Crystal is not Ruby Part 1 — в первой части цикла автор подробно разбирает недостатки языка Crystal по сравнению с Ruby.

Ruby’s New Exception Keyword Arguments — автор рассказывает о новых именованных аргументах (keyword arguments) в Ruby 2.6: exception: false и exception: true.

Variable Names: Avoiding Conjunctions — запоминаем правило именования переменных — не использовать союзов (например, and, or и but).

Hot Module Reloading with Webpacker — как облегчить frontend-разработку на Rails с помощью hot module reloading библиотеки Webpacker.

Ruby on Rails — Advanced Tools (part 3) — продолжение цикла о Ruby on Rails; статья посвящена продвинутым инструментам для разработки на Rails, таким как HTTP-клиенты и библиотеки для фоновых задач.

Paginating Ruby on Rails Applications with Pagy — автор рассказывает о преимуществах использования гема Pagy для пагинации.

Actionable Tips to Improve Web Performance with Rails — советы о том, как улучшить производительность веб-приложений на Rails.

Timeout: Ruby’s Most Dangerous API — почему не стоит использовать модуль Timeout в Rails.

Performance Impact of Removing OOBGC — Aaron Patterson рассказывает, почему команда GitHub отказалась от использования Out of Band Garbage Collector.

Do we need dependency injection in Ruby? — стоит ли использовать внедрение зависимостей (dependency injection) в приложениях, написанных на Ruby.

Feature Tests vs Integration Tests vs Unit Tests — чем отличаются feature tests, integration tests и unit tests в Ruby on Rails.

Introducing: Stealth — автор рассказывает о Stealth — новом open source фреймворке для создания чатботов.

Everything There Is to Know About Associations in Rails — освежите в памяти, что такое ассоциации — связи между моделями в Action Cable.

Coding Sidekiq Workers the Right Way — автор дает полезные советы о том, как создавать workers в Sidekiq.

Interactor Objects — почитайте, как Interactor-объекты помогают перенести бизнес-логику из контроллеров в модели.

Pry Tips and Tricks — статья полезна тем, кто пользуется интерактивной консолью Pry.

The Case for Before_validation Callback: Complex State Normalization — когда стоит использовать колбэк before_validation при работе с Active Record в Rails.

Arel with Wharel — как гем Wharel упрощает написание запросов в Active Record.

Подборка статей о новом регламенте Евросоюза о защите персональных данных (GDPR), который вступил в силу 25 мая:

Подборка от Andy Croll

A job should know whether to run itself — учимся настраивать фоновые задачи в приложении на Rails.

Active Record’s first and last may not mean what you think — как правильно использовать методы .first и .last в Active Record.

Подборка от Appfolio Engineering

To Sleep, Perchance to Dream: Rails Ruby Bench and Sleepy GC — узнайте, стоит ли использовать Rails Ruby Bench вместе с Sleepy GC.

Upgrading Rails 4 Controller Tests to Rails 5 — как обновить тесты контроллеров при переходе с Rails 4.2 на Rails 5.2.

Подборка от AppSignal

Client-side caching in Rails: conditional GET requests — читайте, как ускорить работу приложений на Rails, используя встроенную поддержку запросов GET с условием (conditional GET).

Ensuring execution, retrying failures and reraising exceptions in Ruby — несколько способов «спасения» исключений в приложении на Rails.

Speeding up your app’s navigation with Turbolinks — как инструмент Turbolinks позволяет ускорить навигацию в Rails-приложениях.

Ruby’s magical Enumerable module — читайте, какие возможности дает модуль Enumerable в Ruby on Rails.

Подборка от Arkency

Rewriting deprecated APIs with parser gem — узнайте, как заменить устаревшие API к Rails Event Store в Rails-приложениях.

correlation id and causation id in evented systems — как использовать атрибуты correlation_id и causation_id при работе с системами событий в Rails.

Подборка от BigBinary

Deploying Docker Registry on Kubernetes using S3 Storage — автор показывает, как развернуть Docker-регистр в кластере сервиса Kubernetes при помощи AWS S3.

Rails 5.2 sets Ruby version in Gemfile and adds .ruby-version file by default — продолжение цикла статей о Rails 5.2; теперь версия Ruby отображается в Gemfile по умолчанию.

Increase reliability of background job processing using super_fetch of Sidekiq Pro — автор показывает, как улучшить надежность обработки фоновых задач при помощи стратегии super_fetch в Sidekiq Pro.

How to mitigate DDoS using Rack::Attack — в этом туториале автор показывает, как Rack::Attack позволяет снизить количество запросов при DDOS-атаке.

Rails 5.2 fixes query caching in MySQL and PostgreSQL adapters — в Rails 5.2 исправлена ошибка кеширования запросов в адаптерах MySQL и PostgreSQL.

Generating filmstrip using puppeteer for better debugging — улучшаем поиск ошибок в приложениях на Rails с помощью функции Filmstrip и инструмента Puppeteer.

Ruby 2.5 added lazy proc allocation for block parameters — статья из серии о Ruby 2.5; автор показывает, как использовать lazy proc allocation при передаче параметров.

APISnapshot built using Elm and Ruby on Rails is open source — инструмент APISnapshot, созданный командой BigBinary, теперь open source.

Faster JSON generation using PostgreSQL JSON function — узнайте, как ускорить генерацию JSON в приложении на Rails с помощью функций PostgreSQL JSON.

Rails 5.2 introduces allow_other_host option to redirect_back method — как использовать опцию allow_other_host в методе redirect_back в Rails 5.2.

Подборка от Heroku

Rails 5.2 Active Storage: Previews, Poppler, and Solving Licensing Pitfalls — учимся использовать Active Storage в Rails 5.2 при развертывании приложений на платформе Heroku.

A Rock Solid, Modern Web Stack — подробная инструкция о том, как создать приложение при помощи Rails API, ActiveAdmin и Create React App на платформе Heroku.

Securing Dependencies for Rails 5.2 Active Storage — автор делится опытом устранения уязвимостей в Rails 5.2 Active Storage, связанных с функционалом создания превью-версий PDF- и видеофайлов.

Подборка от Nopio

How to Setup Rails Application on Heroku — инструкция по развертыванию Rails-приложения на платформе Heroku.

How to Organize Large Rails Applications — автор дает советы, как оптимально организовать структуру крупного Rails-приложения.

Подборка от Paweł Dąbrowski

Create a beautiful chart with just one line — как создавать диаграммы в приложении на Rails с помощью гемов Chartkick и Chartable.

Add beautiful code syntax highlighting to your Ruby on Rails app — как добавить подсветку синтаксиса кода в приложение на Rails.

Подборка от Paweł Urbanek

Quick Tip — Increase Your Productivity with Rails Console Aliases — узнайте, как использование псевдонимов (aliases) поможет вам повысить продуктивность при разработке Rails-приложений.

Screencast — My Ruby on Rails Workflow, Productivity Tips and Tools — в этом скринкасте автор рассказывает о своем workflow и перечисляет инструменты, которыми он пользуется для разработки приложений на Rails.

Hosting Static Site on Dokku with Free Cloudflare CDN and SSL — как развернуть статический сайт на сервисе Dokku с помощью Cloudflare CDN и SSL-сертификата.

Подборка от Reinteractive

Best practices: Async Reverse Geocoding with Ruby and Geocoder — автор показывает, как ускорить обратное геокодирование (reverse geocoding) в Rails-приложении с помощью гема Geocoder.

Accessibility on Rails — как сделать ваше Rails-приложение удобнее для пользователей с ограниченными возможностями.

Five small hacks for your Ruby projects — 5 полезных советов для проектов на Rails.

Why should you learn multiple programming languages? — автор говорит о том, почему изучение нескольких языков программирования полезно для разработчика.

Managing Stripe subscription payments in Rails — как реализовать функционал оплаты подписок с помощью Stripe API в приложении на Rails.

Подборка от RubyGuides

How to Use The Strategy Design Pattern in Ruby — учимся использовать шаблон проектирования Strategy в Ruby.

How To Dramatically Improve Your Ruby Code With Fundamental OOP Principles — улучшаем код на Ruby, используя такие понятия объектно-ориентированного программирования, как cohesion и coupling.

How To Use The Singleton Pattern In Ruby — автор делится мнением о том, стоит ли использовать паттерн Singleton в Ruby.

Why Do We Use Nil? — как использовать объект Nil при разработке на Ruby правильно.

Подборка от Tomas Valent

Rails Bounded Contexts — автор рассказывает об ограниченных контекстах (bounded contexts) в Rails.

Ruby class methods syntax — освежаем в памяти способы описания методов класса (class methods) в Ruby.

Content-Type application/json by default in Rails 5 — как сделать так, чтобы приложение с Rails API воспринимало все запросы в формате JSON по умолчанию.

Туториалы

Setting up a BDD Stack on a Rails 5 Application — подробная инструкция, как подобрать инфраструктуру для behavior-driven development (BDD) в приложении на Rails 5.

Rails Frontend Testing with JavaScript Insights — в данном туториале автор показывает, как протестировать клиентскую часть приложения на Rails.

Simple String encryption in Rails — инструкция, как настроить шифрование User ID в Rails-приложении.

Email with Amazon SES from Rails on EC2 — в этом туториале автор показывает, как использовать сервис отправки электронных писем Amazon SES в Rails-приложениях на Amazon EC2.

Taming Legacy Ruby Code Using the «Sprout Method» Technique — используем sprout method для исправления унаследованного кода.

Serverless Ruby with Docker and Apache OpenWhisk — туториал о том, как развернуть приложения на Ruby в serverless-среде при помощи Docker и Apache OpenWhisk.

How to Build an Effective Initial Deployment Pipeline — автор делится опытом настройки процесса непрерывной интеграции и развертывания (CI/CD).

Building A Creative & Fun API Client In Ruby: A Builder Pattern Variation — автор показывает, как создать API-клиент, используя шаблон проектирования Builder.

Securing User Emails in Rails — как обеспечить безопасность электронных писем пользователей в Rails-приложении.

Релизы

JRuby 9.2.0.0 — представлена новая версия JRuby 9.2.0.0.

RubyGems 2.7.7 — вышла версия 2.7.7 системы управления пакетами RubyGems.

RubyMine 2018.2 EAP — компания JetBrains выпустила обновленную сборку RubyMine 2018.2 EAP 182.2574.11.

Passenger 5.3.1: crash + spawn hotfix — вышла новая версия популярного сервера Passenger 5.3.1.

Jekyll 3.8.1 — новая версия популярного генератора статичных сайтов Jekyll 3.8.1.

Ruby Gems

MethodFinder — гем Method Finder для Ruby.

Wharel — гем позволяет писать краткие Arel-запросы в ActiveRecord.

Послушать

The Bike Shed

  • 152: I Look For Stories — ведущие и гость подкаста Nickolas Means обсуждают множество тем: от storytelling до идеи лицензирования разработчиков ПО.
  • 153: I Would Lose 3,000 Crates, and I Would Lose 12,000 More — ведущие обсуждают логическую репликацию в PostgreSQL 10, коды ошибок в Heroku, а также другие интересные темы.
  • 154: We All Have Work to Do — Eileen Uchitelle рассказывает, какие новшества будут реализованы в 6-й версии Ruby on Rails.

Ruby Rogues

RWpod

Посмотреть

RailsConf 2018 videos from Confreaks — подборка видео с прошедшей в апреле конференции RailsConf 2018.

An Introduction to Event Sourcing — доклад о том, как шаблон проектирования Event Sourcing помогает создавать domain-centric приложения на Rails.

Exploding Rails — как улучшить структуру приложения на Rails при помощи наборов гемов rom-rb и dry-rb.

Майские выпуски GoRails, в которых ведущий подробно рассказывает о третьем принципе SOLID (Liskov substitution principle), показывает, как осуществить миграцию с Paperclip на Rails Active Storage, как использовать слоты в фреймворке Vue.js, а также продолжает показывать возможности ActionCable:

Подборка платных скринкастов от Drifting Ruby в мае:

Майские выпуски платных скринкастов от Ruby Tapas:

События

В июне Rails Girls проведут бесплатные двухдневные воркшопы в Европе:

Конференции

RubyC — 2 и 3 июня в Киеве состоится крупнейшая в Европе Ruby-конференция RubyC. Спикеры расскажут о последних трендах в мире Ruby, в том числе о JRuby, Clean Architecture и Machine Learning.

Paris.rb conf — 28 и 29 июня в Париже пройдет конференция Paris.rb conf 2018, где участники смогут обменяться опытом, послушать интересные доклады, а также весело провести время.

EuRuKo 2018 — EuRuKo, знаковое событие для Ruby-сообщества Европы, 2018 состоится 24 и 25 августа в Вене (Австрия), билеты уже в продаже!


Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.


← Предыдущий выпуск: Ruby дайджест #17

LinkedIn

4 комментария

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Спасибо большое за тонну вкусного материала!

Большое спасибо за отменную подборку !

спасибо за подборку.

Подписаться на комментарии