Ruby/Rails дайджест #19: нові версії фреймворку Sinatra, реліз Ruby 2.6.0-preview2, матеріали з RubyKaigi 2018

Привіт всім! Незважаючи на сезон відпусток, червень видався досить продуктивним для 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.

— що нового додалося у версії RubyMine 2018.2 EAP (build 182.3341.19) від компанії JetBrains.

Stripe building is a Ruby typechecker — Stripe розробляє Sorbet — інструмент для типізації в Ruby.

Http.rb is Great — почитайте про переваги http.rb — швидкого і простого у використанні HTTP-клієнта для Ruby.

Python vs. Ruby vs. Node.js — platform Which 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 — дізнайтеся, як застосовувати лямбда-вирази в 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 the 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 ділиться враженнями про минулу 2-3 червня у Києві конференції RubyC.

Цикл статей про конфігурації Rails-додатки на AWS EC2 за допомогою інструменту Chef:

Добірка від 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.

— автор ділиться своїм досвідом роботи з механізмом маршрутизації в 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.

— автор на прикладах показує, як скорочення допомагають полегшити роботу з менеджером гемов 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 за допомогою API і Rails 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 — гість подкасту — — розповідає про 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 with Intro Pawe? D?browski — основна тема подкасту — метапрограмування і предметно-орієнтовані мови (DSLs).

RR 367: Ruby Core Language Evolution: Moving towards with functional Victor Shepelev — гість подкасту — український програміст Віктор Шепелєв — розповідає про функціональному програмуванні в Ruby.

RR 368: Improving Ruby Performance with Rust with Daniel P. Clark — провідні і гість обговорюють, як Rust дозволяє поліпшити продуктивність додатків на Ruby.

RWpod

Подивитися

Підбірка відео з конференції RubyKaigi 2018 (англійською мовою):

Червневі випуски GoRails , у яких ведучий пояснює два принципи SOLID (Interface Segregation Principle і Dependency Inversion Principle), показує, як мігрувати Rails-додаток з Heroku на платформу HatchBox, а також докладно розбирає OAuth API:

Підбірка платних скрінкасти від Drifting Ruby за червень:

Червневі випуски платних скрінкасти від Ruby Tapas:


Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на volodymyr.vorobiov@rubygarage.org . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.


? Попередній випуск: Ruby дайджест #18

Опубліковано: 07/07/18 @ 07:00
Розділ Безпека

Рекомендуємо:

C++ дайджест #5: огляд С++ 17 та 20, реліз Visual Studio 15.8 Preview 3
4 важливих ради для команди бізнес-аналітиків
Чому багатьом хочеться стати менеджером і це не завжди гарна ідея
Акція: Вгадай рахунок матчу «Росія-Хорватія» та отримай діагностику сайту в подарунок!
Сто років менеджерського досвіду в IT, або Свій досвід добре, але і до іншим розумним людям варто прислухатися