Привет всем! Несмотря на сезон отпусков, июнь выдался достаточно продуктивным для Ruby-сообщества.
Начнем с того, что в июне вышли новые версии Ruby-фреймворка Sinatra 2.0.2 и 2.0.3, генератора статичных сайтов Jekyll 3.8.3 и сервера Passenger 5.3.3. Также сообщество Ruby объявило, что больше не будет поддерживать версию Ruby 2.2, а значит следует переходить на более новые версии Ruby. Также обратите внимание на цикл статей RubyGarage о конфигурации Rails-приложения на AWS при помощи Chef.
Почитать
Support of Ruby 2.2 has ended — сообщество Ruby больше не поддерживает версии Ruby 2.2.
More YAML improvements in the Updated RubyMine 2018.2 EAP — что нового добавилось в версии RubyMine 2018.2 EAP (build 182.3341.19) от компании JetBrains.
Stripe is building a Ruby typechecker — Stripe разрабатывает Sorbet — инструмент для типизации в Ruby.
Http.rb is Great — почитайте о преимуществах http.rb — быстрого и простого в использовании HTTP-клиента для Ruby.
Python vs. Ruby vs. Node.js — Which platform is a fit for your project?— обзор сильных и слабых сторон Ruby, Python и Node.js.
Learn Haskell, Write Better Ruby — как знание Haskell может помочь в создании приложений на Ruby.
ActiveRecord’s where.not and nil — как правильно использовать условие where.not при создании сложных запросов.
Ruby on Rails vs Laravel Comparison: Which Framework to Choose for Your Next Project?— сравниваем фреймворки Ruby on Rails и Laravel.
Why Crystal Is My Next Language — почему опытный разработчик на Ruby и Python решил выучить язык программирования Crystal.
Using Replica database with your ActiveRecord models — автор делится опытом использования реплики базы данных для генерации статистических данных.
Applications of Lambda in Ruby — узнайте, как применять lambda-выражения в Ruby.
Golang for Rubyists. Part 6. Structs, Methods and Interfaces — продолжение цикла о языке Go; статья посвящена структурам, методам и интерфейсам.
Making Tests Go Faster — как ускорить прохождение тестов в приложении на Rails.
Rails Asset Pipeline Directory Traversal Vulnerability — в библиотеке Sprockets найдена уязвимость, связанная с directory traversal.
From ActiveRecord to Diesel — автор сравнивает, как один и тот же SQL-запрос выполняется при помощи Ruby и Active Record, а затем при помощи Rust и Diesel.
Do You Know How Hash Table Works? (Ruby Examples) — что такое хэшированная таблица и как она работает в Ruby.
Modernizing StackShare’s Front End: The React + Rails Stack — как обновить клиентскую часть приложения на Rails: изучаем опыт StackShare.
Demand for Ruby on Rails is Still Huge — Ruby on Rails — наиболее востребованная веб-технология среди стартапов в США.
First Impression of Elixir, from a Rubyist’s Perspective — Ruby-разработчик делится своими впечатлениями о языке Elixir.
Ruby inheritance — Access modifiers and misconceptions behind them — освежите в памяти, как ведут себе модификаторы доступа (access modifier) в Ruby.
Disassembling Rails: How Fragment Caching Works — начало цикла о Ruby on Rails; эта статья посвящена кэшированию фрагментов.
Quest for Ruby Pattern Matching — как можно реализовать pattern matching в Ruby.
Working Well With Legacy Code — несколько полезных советов, как работать с унаследованным кодом.
Remove AMP without Hurting SEO Rating, Organic Traffic and Performance — автор рассказывает, как отключить сервис AMP на сайте без вреда для SEO и производительности.
Подборка от Andy Croll
Use beginning and end of string in regular expressions — какой синтаксис стоит использовать в регулярных выражениях, чтобы избежать возможных уязвимостей.
Ignore PHP bots with Rack::Attack — как блокировать PHP-ботов (замедляющих работу вашего приложения) при помощи Rack::Attack.
Подборка от AppSignal
Ruby’s redo, retry and next keywords — как использовать ключевые слова redo, retry и next в Ruby.
Caching counters with ActiveRecord’s counter caches — подробная инструкция, как пользоваться функцией кэширования счетчиков в Active Record.
Подборка от Arkency
Removing magic with magic — автор показывает, как проследить, где используется унаследованный код, чтобы удалить или модифицировать его.
Rewriting deprecated APIs with parser gem — как переписать устаревшие API при помощи гема Parser.
Подборка от BigBinary
Using Concurrent Ruby in a Ruby on Rails Application — как использовать инструменты работы с многопоточным кодом в приложении на Rails.
Rails 5.2 uses AES-256-GCM authenticated encryption as default cipher for encrypting messages — в Rails 5.2 по умолчанию используется AES-256-GCM шифрование сообщений.
Статьи, посвященные конференции RubyKaigi 2018:
Подборка от Cezar Halmagean
Ruby’s attr_accessor, attr_reader and attr_writer — как известно, по умолчанию в Ruby методы объектов доступны, а данные — скрыты. Статья показывает, как сделать данные доступными.
Is Ruby pass-by-reference or pass-by-value?— разбираемся, какая стратегия используется в Ruby для передачи объектов — pass-by-value или pass-by-reference.
Object-Oriented Programming (OOP) with Ruby — новичкам в Ruby будет полезно более детально ознакомиться с концепцией объектно-ориентированного программирования.
Подборка от Paweł Świątkowski
Integrating Pagy with Hanami — как интегрировать гем Pagy с фреймворком Hanami.
Hidden jewels of Ruby stdlib — узнайте, какие возможности дает библиотека stdlib в Ruby.
Подборка от Prograils
Starting with Rails — how to set up a development environment — программисты-новички, не пропустите инструкцию по настройке среды разработки для Rails.
Three ways of iterating over tree-like ActiveRecord structures — три способа работы с древовидными структурами данных в Active Record.
Подборка от reinteractive
Frankenstein’s ActiveRecord: How to stitch together complex ActiveRecord queries from simple parts — полезные советы, как упростить написание запросов в Active Record.
Docker for Rails Development — учимся использовать платформу Docker для разработки приложений на Rails.
Подборка от RubyGarage
RubyGarage on RubyC 2018 — команда разработчиков RubyGarage делится впечатлениями о прошедшей
Цикл статей о конфигурации Rails-приложения на AWS EC2 при помощи инструмента Chef:
- The Ultimate Guide to Configuring a Rails App on Amazon EC2 with Chef: Part 1
- The Ultimate Guide to Configuring a Rails App on Amazon EC2 with Chef: Part 2
- The Ultimate Guide to Configuring a Rails App on Amazon EC2 with Chef: Part 3
Подборка от RubyGuides
Why Do We Create Classes?— автор объясняет, зачем создавать классы в приложениях на Ruby, а также рассказывает, что такое абстракции и почему они важны.
Ruby’s Powerful Method Arguments & How To Use Them Correctly — подробный гайд, посвященный аргументам метода (method arguments) в Ruby.
Подборка от Runtime Revolution
Redis — An Introduction — учимся настраивать Redis в приложении на Rails.
Calculating Route...— автор делится своим опытом работы с механизмом маршрутизации в Rails.
Crystal is not Ruby Pt. 2 — вторая статья цикла о сравнении языков программирования Crystal и Ruby.
Подборка от Sam Saffron
An analysis of memory bloat in Active Record 5.2 — узнайте, почему Active Record 5.2 склонен к чрезмерному использованию памяти.
Ruby’s external malloc problem — автор подробно описывает проблему при использовании функции malloc для очистки памяти в Rails-приложениях.
Подборка от Samuel Williams
Improving Ruby Concurrency — как улучшить работу с многопоточным кодом в приложениях на Ruby.
Improving Ruby Fibers — автор показывает, как увеличить производительность класса Fiber в Ruby.
Asynchronous Ruby — как реализовать асинхронное программирование в Ruby.
Туториалы
Rails CSRF protection for SPA — учимся предотвращать CSRF-атаки в SPA-приложениях.
React Hot Reload in Ruby On Rails — подробный гайд о том, как использовать hot module reloading в приложении на Rails и React.
Testing the multi-subdomain Rails app — тестируем Rails-приложение с многими субдоменами.
Setting up a BDD Stack on a Rails 5 Application — детальная инструкция, как создать приложение на Rails 5 и настроить инструментарий для behavior-driven development.
Quick tips for practical Rubocop workflow — полезные советы, которые помогут вам в работе с анализатором кода RuboCop.
Simple shortcuts to get more out of Bundler — автор на примерах показывает, как сокращения помогают облегчить работу с менеджером гемов Bundler.
Using GraphQL with Rails — учимся использовать язык запросов для API GraphQL в приложениях на Rails.
Ruby on Rails: Paginate Stateful Tabs with Pagy — туториал показывает, как удобен гем Pagy при наличии нескольких пагинаций на странице (например, при наличии вкладок).
JSON Serialization in Rails: A Complete Guide — автор подробно объясняет, как осуществить сериализацию JSON в приложении на Rails.
Ruby on Rails — how to create perfect enum in 5 steps — учимся создавать перечисляемые типы (enums) в Ruby правильно.
Testing HTML5 drag and drop with Capybara — полезная инструкция, как тестировать функцию drag and drop при помощи инструмента Capybara.
How to track user events and visits in Rails using Ahoy gem — туториал научит вас отслеживать действия пользователей с помощью гема Ahoy.
Rails and Conditional Validations in Models — несколько способов реализовать conditional validation в моделях Rails-приложения.
Configuration Cache and Rails Session Store with Redis — как настроить управление сессиями при помощи встроенного Redis cache store в приложении на Rails 5.2.
Safely Migrating from Paperclip to Active Storage — читаем, как осуществить миграцию с Paperclip на Active Storage.
Delegating Methods In Ruby With Forwardable — учимся делегировать методы с помощью модуля Forwardable в Ruby.
Первые две части туториала по созданию SPA при помощи Rails API и Vue.js:
Книги
Rails Testing Handbook Available for Kindle — Rails Testing Handbook теперь доступна на ридерах Amazon Kindle.
Релизы
Sinatra 2.0.2 and 2.0.3 — релиз новых версий фреймворка Sinatra.
Ruby 2.6.0-preview2 — в последний день мая вышла вторая preview-версия Ruby 2.6.0, которая содержит ряд улучшений по сравнению с preview1.
Jekyll 3.8.3 — представлена новая версия популярного генератора статичных сайтов Jekyll 3.8.3.
Passenger 5.3.3: installer fixes — популярный сервер приложений Passenger обновился до версии 5.3.3.
dry-monads 1.0 — вышла стабильная версия гема dry-monads.
GitLab 11.0 released with Auto DevOps and License Management — новая версия системы управления репозиториями GitLab с функцией Auto DevOps и менеджером лицензий.
Ruby Gems
MiniSql — простой, безопасный и быстрый SQL executor для PG.
Asynchronize — гем упрощает создание асинхронных методов.
VisualizeRuby — библиотека позволяет визуализировать код на Ruby в виде структурной схемы.
Woah!— минималистичный веб-фреймворк, созданный на Rack.
Rydux — этот гем позволяет использовать функционал библиотеки Redux при работе с бэкэндом.
Послушать
The Bike Shed
156: It’s a Commercial Enterprise — ведущие и гость подкаста Olivier Lacan обсуждают важность обновления инструментария разработчика и другие темы.
158: This is How I Ruin Meetings — гость подкаста — Aaron Patterson — рассказывает о garbage collection в Ruby, о JIT-компиляторе в Ruby 2.6, а также выражает свои взгляды на функциональное программирование.
159: Confusing and Hard to Use — главная тема выпуска — легко ли использовать чистый SQL при использовании технологии программирования ORM.
Ruby Rogues
RR 365: Should I Use Ruby on Rails with Nathan Kontny — гость подкаста — известный разработчик и предприниматель Nathan Kontny — рассказывает о своем опыте разработки на Ruby on Rails.
RR 366: Build Your Own RSpec: A Gentle Metaprogramming Intro with Paweł Dąbrowski — основная тема подкаста — метапрограммирование и предметно-ориентированные языки (DSLs).
RR 367: Ruby Core Language Evolution: Moving towards functional with Victor Shepelev — гость подкаста — украинский программист Виктор Шепелев — рассказывает о функциональном программировании в Ruby.
RR 368: Improving Ruby Performance with Rust with Daniel P. Clark — ведущие и гость обсуждают, как Rust позволяет улучшить производительность приложений на Ruby.
RWpod
- 25 выпуск 06 сезона. Ruby 2.5 and CGI.escape, Electron 3.0.0-beta.1, V8 v6.8, ESLint v5.0.0, MobX 5, Breaking Up a Monolith и прочее
- 24 выпуск 06 сезона. Ruby’s external malloc problem, Using GraphQL with Rails, MRuby-Zest, Polly.JS, Flat color picker, Yett и прочее
- 23 выпуск 06 сезона. Rails 5.2 credentials are not secure, WCAG 2.1 is a W3C recommendation, Deno, BLASjs, LuminJS и прочее
- 22 выпуск 06 сезона. Microsoft + GitHub, Http.rb is Great, The Cult of the Complex, Nuclide, ProppyJS, Minipack и прочее
Посмотреть
Подборка видео с конференции RubyKaigi 2018 (на английском языке):
- Parallel and Thread-Safe Ruby at High-Speed with TruffleRuby
- JRuby 9.2 and Rails 5.x
- High Performance GPU computing with Ruby
- Deep into Ruby Code Coverage
- Devly, a multi-service development environment
- IRB Reboot: Modernize Implementation and Features
- Three Ruby performance projects
- TTY — Ruby alchemist’s secret potion
- All About RuboCop
- What would your own version of Ruby look like?
- Karafka — Ruby Framework for Event Driven Architecture
- Streaming from RubyKaigi with Matz!
Июньские выпуски GoRails, в которых ведущий объясняет два принципа SOLID (Interface Segregation Principle и Dependency Inversion Principle), показывает, как мигрировать Rails-приложение с Heroku на платформу HatchBox, а также подробно разбирает OAuth API:
- Interface Segregation Principle
- Dependency Inversion Principle
- How to Migrate from Heroku to Hatchbox.io
- Doorkeeper Omniauth OAuth Client
- API Authentication with an OAuth Provider
Подборка платных скринкастов от Drifting Ruby за июнь:
- #136 User Notifications
- #137 Multistep Form with Wicked
- #138 Rails API App — Authentication with JSON Web Tokens
- #139 Search Encrypted Attributes with Blind Index
- #140 Editors
Июньские выпуски платных скринкастов от Ruby Tapas:
- Episode #530: Two Factor Authentication — Frank Rietta
- Use «barewords» to embrace the true power of late-binding in Ruby
- Episode #531: Password Authentication with Brandon Dees — Part 1
- Episode #532: Password Authentication with Brandon Dees — Part 2
- Bust nils with Hash#fetch!
- Episode #533: Rails System Test
- Elegantly generate data in bulk with Ruby Enumerators and Arrays
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #18