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:
- 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.
— автор ділиться своїм досвідом роботи з механізмом маршрутизації в 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
- 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 Test System
- Elegantly generate data in bulk with Ruby Enumerators and Arrays
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.
? Попередній випуск: Ruby дайджест #18
Опубліковано: 07/07/18 @ 07:00
Розділ Безпека
Рекомендуємо:
C++ дайджест #5: огляд С++ 17 та 20, реліз Visual Studio 15.8 Preview 3
4 важливих ради для команди бізнес-аналітиків
Чому багатьом хочеться стати менеджером і це не завжди гарна ідея
Акція: Вгадай рахунок матчу «Росія-Хорватія» та отримай діагностику сайту в подарунок!
Сто років менеджерського досвіду в IT, або Свій досвід добре, але і до іншим розумним людям варто прислухатися