Ruby/Rails дайджест #20: перша передрелізна версія Rails 5.2.1, версія 2.0.0 гема Pundit, цікаві матеріали з RubyHACK 2018

Всім привіт! Розпал літа не позначилася на активності Ruby-спільноти — крім релізів нових версій гемов і Rails, також проводилося безліч конференцій і митапов. Всі подробиці — в нашому новому дайджесті.



Почитати

Running JRuby on the Graal JIT — автор розповідає про продуктивності інтерпретатора JRuby, запущеного на віртуальній машині GraalVM.

E-Commerce at Scale: Inside Shopify's Tech Stack — розробникам на e-Commerce проектах буде цікаво дізнатися подробиці про стеку технологій Shopify.

Notes on writing Service Objects — автор ділиться порадами щодо написання service objects.

Escaping the SPA rabbit hole with modern Rails — як уникнути проблем у написанні SPA (single-page applications) на Rails.

How to Create an API Wrapper of an External Service in Rails — автор показує, як написати обгортку для зовнішнього API.

Refactory scenario: removing conditional blocks and extracting code to a private method — простий і корисний спосіб рефакторінгу коду в Rails.

— автор ділиться думкою про баланс між складністю читання і запису даних.

Preventing False Positives in RSpec When Testing Exceptions — як уникнути помилкових позитивних результатів при тестуванні винятків за допомогою RSpec.

Don't Step on a Rake, Use Rake::DSL — як створити wrapper class для Rake-завдань, щоб не забруднювати top-level scope.

Designing job queue in Redis — вчимося створювати job queue з допомогою Redis.

My favorite parts of Ruby — автор ділиться думкою про деякі риси мови Ruby.

Making Ruby Yours — як з допомогою Refinements безпечно змінювати методи, які оголошені в стандартній бібліотеці Ruby.

Ruby 2.6 adds Matrix#antisymmertic? — у Ruby 2.6.0-preview2 можна використовувати метод Matrix#antisymmetric?, щоб визначити тип матриці.

Painlessly managing long running processes in your views using Ruby on Rails — як легко налаштовувати довго виконуються завдання в уявленнях за допомогою інструменту fie.

Hiding .gemrc credentials in dotfiles — автор показує, як забезпечити безпеку зберігання облікових даних в dotfiles.

Stop shipping untested Ruby code with undercover — як гем Undercover допомагає виявляти код на Ruby, не покритий тестами.

Добірка від Appfolio Engineering

Ruby Memory Environment Variables — Simpler Than They Look — як environment variables допомагають оптимізувати використання пам'яті в додатках на Ruby.

Ruby's Global Method Cache — дізнайтеся, що таке global method cache в Ruby і як його розмір впливає на швидкість роботи додатків.

Can I Use Ten 10% Speedups to Make Ruby Instant? — автор пояснює, як різні методи прискорення оптимізують роботу програми на Ruby.

Добірка від AppSignal

Custom Exceptions in Ruby — детальна інструкція про те, як працювати з власними винятками (custom exception) в додатках на Ruby.

Under the Hood: «Slurping» and Streaming Files in Ruby — автор розповідає і показує, як працювати з великими файлами за допомогою вбудованих в мову Ruby інструментів.

JavaScript-sprinkled Rails Applications — дізнайтеся, як JavaScript sprinkles допомагають прискорити обробку сторінок з динамічним або призначеним для користувача контентом в додатках на Rails.

Generating Random Numbers in Ruby — вчимося генерувати випадкові числа різними способами в Ruby.

Добірка від BigBinary

Rails 5.2 added method write_multi to cache store — Rails 5.2 дозволяє робити кілька записів у сховище кешу одночасно за допомогою методу write_multi.

Speeding up Docker image build process of a Rails application — автор ділиться досвідом прискорення процесу створення образу Docker в додатку на Rails.

Продовження циклу статей про нововведення в Ruby 2.6:

Добірка від Cezar Halmagean

What Is Used For Ruby? — корисна стаття для новачків, в якій автор розповідає про мову фреймворку Ruby і Rails.

How to Use the Each Method in Ruby — стаття докладно описує, як працює метод each в Ruby.

Learn How to Use Ruby Arrays in Less Than 10 Minutes — корисний гайд, який пояснює, як використовувати масиви в Ruby.

How to Use Strings in Ruby — освіжаємо в пам'яті, що таке рядка (strings) і як вони використовуються в Ruby.

How to Use the Ruby Map Method — у цій статті автор докладно розбирає метод map в Ruby.

What Is a Ruby Перечіслімого and Why Would You Use It? — для чого потрібен модуль Перечіслімого в Ruby і як його використовувати.

Why Should You Too Learn Elixir — чому Ruby/Rails розробникам корисно вивчати мову програмування Elixir.

If vs. Unless in Ruby — згадуємо, чим відрізняються оператори if і unless.

Ruby's and Sort Sort_by — автор описує різні алгоритми сортування і пояснює, як працюють методи sort і sort_by в Ruby.

What Is a Ruby Reducer? — вчимося використовувати метод reduce в Ruby.

How to Learn Ruby on Rails in 2018, the Ultimate Guide — корисні поради, з чого почати вивчення Ruby on Rails.

Статті про фреймворку RSpec:

Добірка від Codeship

Measuring Performance Metrics in Rails — які метрики важливі для вимірювання продуктивності додатків на Rails і якими інструментами користуватися для цього.

Using AWS EKS in Your Continuous Integration Workflow — туторіал показує, як налаштувати процес CI/CD програми, розгорнутого на сервісі AWS EKS, за допомогою інструменту Codeship Pro.

Добірка від Imaginary Cloud

Queries on Rails — Showcasing Active Record and Arel — автор на прикладах показує, як складати запити в Active Record.

Ruby on Rails — Send Emails with Style — дізнайтеся, які геми спрощують процес верстки розсилок в Rails-додатках.

Добірка від Jason Swett

Why I Recommend Against Using Cucumber — автор ділиться думкою про Cucumber — популярному фреймворку для тестування.

Things You Can (and Should) Ignore When Getting Started with Rails Testing — дізнайтеся, якими інструментами тестування для Rails, на думку автора, можна знехтувати.

Добірка від Netguru

11 Books Every Ruby on Rails Developer Should Read — добірка книг, які варто прочитати кожному Ruby on Rails розробнику.

Python Vs. Ruby for Web App Development — автор порівнює два популярні мови програмування, що використовуються для розробки веб-додатків.

Добірка від Railsware

Ruby on Rails for FinTech Products. Is it a fit for your startup? — автор ділиться своєю думкою з приводу використання фреймворку Rails для створення Fintech-додатків.

Ruby on Rails Hosting Providers for Your Application — дізнайтеся, які критерії важливі при виборі хостингу для Rails-додатки, а також які основні варіанти пропонуються на ринку.

Добірка від RubyGuides

The Definitive RSpec Tutorial With Examples — детальна інструкція з написання тестів за допомогою RSpec.

Everything You Need to Know About Ruby Operators — автор описує різні типи операторів в Ruby і на прикладах показує, як їх використовувати.

Добірка від Rubyplus

Integrating Turnjs with Rails 5 — як інтегрувати JavaScript-бібліотеки Turn.js в додаток на Rails 5.

Handing Undeliverable Email Address in a Rails app — вчимося налаштовувати обробку електронних листів з неправильно вказаною адресою в додатках на Rails.

Bootstrap 4.1 alerts in Rails 5 Apps — як використовувати нотифікації в стилі сигналів Bootstrap 4.1 в додатках на Rails.

Dealing with Money in Rails Apps — як використовувати гем money-rails в Rails-додатках, що працюють з різними валютами.

Capistrano 3.11 Tips — корисні поради про те, як працювати з інструментом Capistrano.

Deliver Email With Amazon SES In A Rails app — інструкція, як налаштувати відправку та отримання електронних листів за допомогою сервісу Amazon SES в додатку на Rails.

Finger Printing to Identify Visitors to Your Site — вчимося настроїти ідентифікацію браузера (fingerprinting) в Rails-додатках.

Rails 6 : find_or_create_by on a has_many relationship — в Ruby on Rails 6.0.0.alpha метод find_or_create_by можна викликати асоціації has_many.

Dealing with Spaces in S3 Files Stored within Folders in a Bucket — як прибрати пробіли в назвах файлів, що зберігаються в Amazon S3.

Generating Presigned URL for AWS S3 Files — як обмежити доступ до файлів, що зберігаються в Amazon S3, при допомозі призначених URL.

Добірка від Tomas Valent

Rails 5.2 credentials cheat cheat — поради, як користуватися шифрованими обліковими даними (encrypted credentials) в Rails 5.2.

Ruby on Rails Active Storage how to change host for url_for — як встановити хост за замовчуванням для методу url_for.

Туторіали

Build a Realtime Serverless GraphQL API with Websockets on AWS — детальна інструкція, як написати бессерверный GraphQL API за допомогою сервісу AWS AppSync.

Upgrade Rails from 5.0 to 5.1 — як оновити додаток на Ruby on Rails з версії 5.0 до 5.1.

Visualizing and optimizing JS bundle size in Rails/Webpacker apps — детальна інструкція про те, як оптимізувати розмір bundle.js у додатку на Rails з компонентом на React.

Adding Webpacker to a legacy Rails app — вчимося інтегрувати гем Webpacker в legacy-додаток на Rails.

Writing Testable API Documentation Using APIB and Dredd — покроковий туторіал показує, як написати придатне до тестування Rails API додаток і документацію до нього.

Powering your Ruby & Rails development with Pry — в цьому туториале автор показує, як використовувати інтерактивну консоль Pry в розробці на Ruby on Rails.

ActiveRecord — Part 2: Useful methods — вчимося використовувати корисні методи в Active Record.

How to use Sequel with ActiveRecord database — цей туторіал навчить вас використовувати гем Sequel при роботі з базою даних Active Record.

Thin and maintainable Rails mailers: how we refactored Rails mailers at mkdev — автор ділиться досвідом рефакторінгу відправки листів в додатку на Rails 5.1.

Running rails tests under CircleCI 2.0 with MariaDB — короткий туторіал по налаштуванню CircleCI 2.0 для Rails-додатки.

Adding Authorization to Sinatra with Pundit — автор показує, як використовувати інструмент Pundit в додатках на фреймворку Sinatra.

Create your own static site generator — простий спосіб написати генератор статичних сайтів на Ruby.

Training Tesseract 4 models from real images — як тренувати нові моделі для Tesseract — популярного open source інструменту для оптичного розпізнавання символів.

Релізи

Rails 5.2.1.rc1 — перша передрелізна версія фреймворку Rails 5.2.1.

Pundit — вийшла версія 2.0.0 популярного гема Pundit.

RubyMine 2018.2 (build 182.3684.86) — компанія JetBrains випустила чергове оновлення своєї IDE RubyMine; складання 182.3684.86 має ряд поліпшень, таких як можливість переформатувати код у форматі YAML, використовувати debugger для віддалено виконуваних процесів, підтримку нових функцій JavaScript 2.9 і 3.0 і так далі.

Ruby Gems

SimpleSerializer — гем перетворює об'єкти Ruby у формат JSON.

XmlMatchers — гем надає matchers для тестування XML RSpec.

StaleOptions — бібліотека кешує HTTP-відповіді.

YaEnum — гем розширює можливості використання даних типу enum в Ruby.

OpenStreetMap — бібліотека для інтеграції OpenStreetMap API.

Послухати

The Bike Shed

161: Re-Incoherence — провідні подкасту обговорюють продуктивність Rails, надмірне використання пам'яті в Active Record 5.2, а також rebalancing coherence.

162: You Have Ruined Your Rails App — у цьому подкасті провідні і Sam Phippen обговорюють, чому складно підтримувати додатки на старих версіях Ruby, що таке service-oriented architecture (SOA), а також багато інших цікавих тем.

163: Insert Some Colons For Me — головна тема подкасту — IDE Visual Studio Code від компанії Microsoft.

164: A Piece of My Identity — провідні подкасту Derek Prior і Sean Griffin повідомляють про свій відхід з проекту; їх змінить новий ведучий — Chris Toomey.

Ruby Rogues

RR 369: How Ruby 2.5 Prints Backtraces and Error Messages with Vishal Telangre — провідні і гість подкасту Vishal Telangre з компанії BigBinary обговорюють переваги зворотного порядку виведення backtrace і повідомлень про помилки в Ruby 2.5.

RR 370: How I Built Timeasure with Eliav Lavi — основна тема подкасту — гем Timeasure, який дозволяє виміряти продуктивність методів в Rails-додатку на production.

RR 371: The Modular Monolith: Rails Architecture with Dan Manges — гість подкасту — Dan Manges з компанії Root — розповідає про архітектуру Modular Monolith для додатків на Rails.

RWpod

The Ruby Testing Podcast

Подивитися

www.youtube.com/watch?v=gTNC26BtRFc#t — презентація творця мови Ruby Yukihiro «Matz» Matsumoto на митапе RubySG в Сінгапурі.

Writing Ruby Like it's 2018 — доповідь Joe Leo на минулому в червні конференції GORUCO 2018.

OmbuCast Episode 1 — Performance improvements using derailed_benchmarks — ведучий показує, як використовувати гем Derailed Benchmarks для тестування додатків на Ruby on Rails.

Showcase of Scraper App, Visual Web Scraping Prototype — в цьому скринкасте Pawe? Urbanek показує прототип програми для веб-скрейпинга Scraper App.

Підбірка доповідей з пройшла в травні конференції RubyHACK 2018:

Липневі випуски GoRails , у яких ведучий докладно розбирає, як інтегрувати додаток на React Native з Rails API за допомогою протоколу OAuth для аутентифікації, а також показує, як відсилати webhooks за допомогою експоненційної затримки (exponential backoff):

Липнева добірка платних скрінкасти від Drifting Ruby:

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


Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.


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

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

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

Финстрип Липень 2018. 65К. Літо — доходи стоять
Введення в культуру DevOps: вибираємо стратегію тестування
Кар'єрні рішення на прикладі комп'ютерних ігор початку 2000-х
DOU Проектор: tabXpert – Chrome-розширення для ефективного управління вкладками
Переваги й недоліки релокації у Чехію – розповідь українця з Amazon