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:
- Ruby 2.6 adds endless range — в Ruby 2.6 створювати нескінченні цикли стало простіше.
- Ruby 2.6 raises exception when 'else' is used inside 'begin..end' block without 'rescue' — в Ruby 2.6 піднімається виняток, якщо в конструкції begin..end присутній аргумент else, але відсутня rescue.
- Ruby 2.6 adds String#split with block — в Ruby 2.6 можна передавати блок метод String#split, що оптимізує використання пам'яті, так як не потрібно створювати масив даних.
- Ruby 2.6 adds Binding#source_location — в Ruby 2.6 з'явився метод Binding#source_location, який виводить ім'я і розташування файлу, а також рядок у вихідному коді.
- Ruby 2.6 adds option not to raise exception for Integer, Float methods — в Ruby 2.6 з'явилася можливість не піднімати виключення при використанні методів Integer і Float.
Добірка від 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:
- Let vs. Let! vs. Instance Variables in RSpec — коли використовувати let, let! і змінну примірника при роботі з RSpec.
- How to Test Ruby Modules With Rspec — інструкція про те, як тестувати модулі Ruby за допомогою 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
- 26 випуск 06 сезону. Rails 5.2 uses AES-256-GCM authenticated encryption, ECMAScript 2018, Face-api.js, Rabbit Ear та інше
- 27 випуск 06 сезону. Ruby 2.6 adds endless range, Vue.js: the good, the meh, and the ugly, Pnpm, Rete.js та інше
- 28 випуск 06 сезону. TypeScript 3.0 RC, Ruby 2.6 adds String#split with block, Goodbye Microservices, Chessboard.jsx та інше
- 29 випуск 06 сезону. Pundit v2.0.0, GraphQL Cache, The future of WebAssembly, PWACompat, Deterministic StyleSheets, CoolHue та інше
- 30 випуск 06 сезону. Elixir v1.7, TypeScript 3.0, Angular v6.1, Ruby 2.6 adds Matrix#antisymmertic?, Ndb, jsQR та інше
- RWPod Кафе 8: Anton Davydov і Hanami
The Ruby Testing Podcast
- 003 — Aaron Sumner — ведучий бере інтерв'ю у Aaron Sumner — автора книги Everyday Rails Testing with RSpec.
- 004 — Yoseph Radding — в цьому випуску ведучий і гість подкасту обговорюють поняття TDD, принципи SOLID, а також шаблони проектування (design patterns).
Подивитися
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:
- 4 Programming Paradigms in 45 minutes by Aja Hammerly
- Ruby Web Application Security Defense in Depth — by Jeremy Evans
- GraphQL on Rails — Creating the Living APIs for a Data-hungry World — by Jeremy Ward
- Ruby and Unicode, what could go wrong? — by Aaron Lasseigne
- Some Truths About Some Lies About Testing — by David Brady
- Machine Learning Microservices in Rails — by Jordan Hudgens
- Why Funding Open Source is Hard — by Eric Berry
- Ruby Unblocked — by Eliza De Jager
- You Belong In A Room Full of Wizards — by Isaac Sloan
- 5 ways Git can be used to automate your ruby application deployment — by Rodrigo Jardim
- Interfaces Not Required by James Thompson
- Growing a Junior Dev into a Beautiful Coding Butterfly — by Mark Lehman
- Lightning Talks May 4
- Lightning Talks May 3
Липневі випуски GoRails , у яких ведучий докладно розбирає, як інтегрувати додаток на React Native з Rails API за допомогою протоколу OAuth для аутентифікації, а також показує, як відсилати webhooks за допомогою експоненційної затримки (exponential backoff):
- React with Native Rails OAuth API Authentication — Part 1
- React with Native Rails OAuth API Authentication — Part 2
- React with Native Rails OAuth API Authentication — Part 3
- Sending Webhooks with Exponential Backoff
Липнева добірка платних скрінкасти від Drifting Ruby:
- #141 Observer Patterns
- #142 Rails API Versioning
- #143 iOS Authentication with a Rails API
- #144 Creating PDF files with WickedPDF
Випуски платних скрінкасти від Ruby Tapas за липень:
- Your business rules objects are too
- Episode #534 Breaking Down Complex Pull Requests
- Episode #535 String Cleaning
- Episode #536 Learning from the Wider Developer Community
- Episode #537 The Message Myth
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.
? Попередній випуск: Ruby дайджест #19
Опубліковано: 04/08/18 @ 07:00
Розділ Різне
Рекомендуємо:
Финстрип Липень 2018. 65К. Літо — доходи стоять
Введення в культуру DevOps: вибираємо стратегію тестування
Кар'єрні рішення на прикладі комп'ютерних ігор початку 2000-х
DOU Проектор: tabXpert – Chrome-розширення для ефективного управління вкладками
Переваги й недоліки релокації у Чехію – розповідь українця з Amazon