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 мая:
- Adding GDPR Compliance to My Rails App and Technical Blog — как привести ваше Rails-приложение в соответствие с GDPR.
- The GDPR — how it will affect the way you develop? — как регламент GDPR повлияет на то, как вы разрабатываете софт.
- What Does the EU’s GDPR Mean for Your Mobile App or Website? — что следует учитывать веб и мобильным разработчикам после вступления в силу GDPR.
Подборка от 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
- RR 360: Cucumber is 10 years old with Aslak Hellesøy — ведущие беседуют с Aslak Hellesøy — создателем инструмента тестирования Cucumber.
- RR 361: Ruby Elapsed Time with Luca Guidi — ведущие и гость подкаста затрагивают много интересных тем, от протокола сетевого времени (NTP) до языка программирования Go.
- RR 362: Measuring Ruby Performance with Rails and Discourse with Noah Gibbs — гость подкаста рассказывает о бенчмарках от AppFolio, постоянном улучшении фреймворка Ruby on Rails, serverless technology, а также о много другом.
- RR 363: Fir — The Friendly Interactive Ruby REPL with Dean Nasseri — гость и ведущие подкаста обсуждают новую REPL-среду Fir, сравнивая ее с интерактивными оболочками Pry и Fish.
- RR 364: Why Won’t Bundle Update? with Olivier Lacan — основная тема подкаста — менеджер гемов Bundler.
RWpod
- 17 выпуск 06 сезона. Ruby 2.6 added option to raise exception in Kernel#system, GDPR Rails, CKEditor 5 v10.0.0, Perfume.js и прочее
- 18 выпуск 06 сезона. Ruby 2.5.1 Released, Angular 6, Defeating Electron, Asylo, Proton-native, Selection.js, Is-google и прочее
- 19 выпуск 06 сезона. Rails Testing Antipatterns, TensorStream, Guess.js, Isomorphic-git, ScrollHint и прочее
- 20 выпуск 06 сезона. How to mitigate DDoS using Rack::Attack, Timeout::Error, Proxy, The new Javascript ES6 feature, Data-Forge и прочее
Посмотреть
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:
- Vue.js Slots with Tailwind CSS and Rails
- How to Migrate from Paperclip to Rails ActiveStorage
- Liskov Substitution Principle
- Realtime SSH Logs with ActionCable
- Direct Uploads with ActiveStorage
Подборка платных скринкастов от Drifting Ruby в мае:
- #132 Ruby on Rails Development with Microsoft Windows 10
- #133 Dynamic Select Fields
- #134 Ruby Go Lang Extensions
Майские выпуски платных скринкастов от Ruby Tapas:
- Episode #526: Asking for help ... — Jim Remsik
- Episode #527: OpenAPI and Apivore — with Ariel Caplan
- Episode #528: Refactoring for Interviews — Nickolas Means
- Use beautiful binary literals in Ruby
- Make big numbers readable in Ruby
События
В июне Rails Girls проведут бесплатные двухдневные воркшопы в Европе:
- Rails Girls Chișinău — 16 и 17 июня в Кишиневе (Молдова)
- Rails Girls Kraków — 29 и 30 июня в Кракове (Польша)
Конференции
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 августа в Вене (Австрия), билеты уже в продаже!
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #17