Ruby/Rails дайджест #21: реліз Rails 5.2.1, бета-версія Hanami 1.3.0, добірка матеріалів з конференції EuRuKo 2018
Всім привіт!
У серпні вийшла стабільна версія Rails 5.2.1, а популярний тест-фреймворк RSpec оновився до версії 3.8. Спільнота Ruby продовжує вивчати Ruby 2.6 — не пропустіть серію статей від BigBinary. Щоб бути в курсі останніх тенденцій в світі Ruby, подивіться підбірку відео з минулого в кінці серпня конференції EuRuKo 2018.
Почитати
Advanced client stubbing in the AWS SDK for Ruby Version 3 — детальна інструкція, як виконувати client stubbing у версії 3 AWS SDK для Ruby.
Finding where STDOUT/STDERR debug messages are coming from — як дізнатися, звідки надходять налагоджувальні повідомлення stdout і stderr.
Designing Services with dry-rb — як проектувати service objects за допомогою бібліотеки dry-rb.
Dependency Injection Containers vs Hard-coded Constants — дізнайтеся, в чому різниця між контейнерами впровадження залежностей і hard-coded константами.
Indexes on Rails: How to Make the Most of Your Postgres Database — як прискорити роботу Rails-додатки за допомогою оптимізації індексів в PostgreSQL.
Statements and Expressions in Ruby — розбираємо statements і expressions в Ruby на прикладі коду з гема Sequel.
Adding Code Quality Checks To Your Ruby Test Suite — новачками буде корисно дізнатися, як додати інструменти статичного аналізу коду в набір тестів Rails-додатки.
Rails and the Single Responsibility Principle — наскільки Single Responsibility Principle (перший з принципів SOLID) співвідноситься з фреймворком Ruby on Rails.
Migration from the Wordpress to own the Ruby blogging engine — pros and cons — автор розповідають про плюси і мінуси переходу з Wordpress на написану ним самим блог-платформу на Ruby.
The Case of the Flaky Test Suite — автор ділиться досвідом роботи з набором Flaky тестів в Rails-додатку.
Visualize Ruby Execution — як відобразити виконання коду на Ruby.
Runtime Introspection in Ruby — автор показує, як провести інтроспекцію методів, змінних і об'єктів в Ruby.
Ruby Memory Profiling in Practice — короткий гайд по профілізації пам'яті в Ruby.
Flexible Ruby on Rails Reader Objects — автор на прикладі показує, як використовувати reader objects в додатку на Rails.
Clean Module Injection in Ruby — як застосувати monkeypatching допомогою впровадження модуля в Ruby і які переваги це дає.
The Curious Incident of the Shadow in the Run-Time — дізнайтеся про «підводні камені» приховування змінних в Ruby.
Scaling at Instacart: Distributing Data Across Multiple Postgres Databases with Rails — розробник з компанії Instacart ділиться досвідом масштабування баз даних PostgreSQL в Rails-додатку.
Testing APIs in Ruby: An overview — автор на основі власного досвіду перераховує кілька способів тестування API клієнтів в Ruby.
Rails Console Magic Tricks — сім корисних «трюків», які спрощують роботу з вбудованою в Rails консоллю.
Best image uploader for Rails — Revisited — автор на основі власного досвіду перераховує кращі завантажувачі файлів для Rails.
Добірка від Andy Croll
Представник to simplify your code — як позбавитися від надлишкового коду за допомогою методу delegate компоненти Active Support.
Use the presence method — як і навіщо використовувати метод presence компоненти Active Support.
Добірка від Appfolio Engineering
How Can I Use Ruby 2.6 JIT? — презентація Noah Gibbs на конференції Southeast Ruby.
Does ActionCable Smell Like Rails? — розбираємося, що таке Action Cable і як його використовувати для роботи з WebSockets.
Rake Does What?: A Debugging Story — автор розповідає про помилку, пов'язаної з Rake, при оновленні одного з проектів до Rails 5.0 і продовжує детально розбирати причину помилки в статті Ruby's Main Object Does What?
Добірка від AppSignal
Changing the Way Ruby Creates Objects — автор описує, як змінити поведінку створення об'єктів в Ruby.
Ruby gem 2.7: Improvements and bug fixes — що нового у версії 2.7.0 гема AppSignal .
Rails Collection Caching — collection caching в Ruby on Rails.
Push and Pub/Sub in Ruby — як створити Rails-додаток, який передає дані за допомогою моделі Publish/Subscribe.
Добірка від BigBinary
Setting up a high performance Geocoder — вчимося налаштовувати геокодування за допомогою гема Geocoder в Rails-додатку.
Продовження циклу про Ruby 2.6:
- Ruby 2.6 adds Перечіслімого#filter as an alias of Перечіслімого#select — в Ruby 2.6 в якості псевдоніма для методу Перечіслімого#select доданий метод Перечіслімого#filter.
- Ruby 2.6 Introduces Dir#each_child and Dir#children instance methods — в Ruby 2.6 представлені методи примірника Dir#each_child і Dir#children.
- Ruby 2.6 adds write_timeout to Net::HTTP — в Ruby 2.6 в бібліотеку Net::HTTP додано атрибут write_timeout.
- Ruby 2.6 adds support for non-ASCII capital letter as a first character in constant name — в Ruby 2.6 додана підтримка не-ASCII символів в якості першої букви у назвах класів і модулів.
Добірка від Codemancers
Ruby 2.5 adds KeyError#receiver and KeyError#key — в Ruby 2.5 додані методи KeyError#receiver і KeyError#key, які спрощують виправлення помилок в коді.
Ruby 2.6 KeyError#initialize accepts message, receiver, and key as arguments — в Ruby 2.6 метод KeyError#initialize приймає аргументи message, receiver і key.
Добірка від Codeship
Familiarize Yourself with Ruby String Encoding — детальний розбір різних способів кодування рядків в Ruby.
Microservices Messaging: Why REST isn't Always the Best Choice — стаття присвячена налагодження взаємодії між микросервисами.
Добірка від Drivy Engineering
Security tips for rails apps — корисні поради, як поліпшити безпеку програми на Rails.
Exporting significant SQL reports with ActiveRecord — автор розповідає, як була вирішена проблема надмірного витрачання пам'яті при експорті «важких» SQL-звітів.
Добірка від Imaginary Cloud
Protecting a Rails App with Passenger and Nginx — вчимося захищати Rails-додаток паролем, використовуючи Passenger і Nginx.
Node.js and Ruby on Rails: a Comparison — порівняння технологій: Node.js+Express.js або Ruby on Rails.
Добірка від Matt Bessey
Rails + React Server Side Rendering, with Webpacker + Hypernova — в цьому туториале автор показує, як здійснити серверний рендеринг React в додатку на Rails за допомогою інструментів Webpacker і Hypernova.
Pre-fetching Data for Apollo GraphQL Client — додаток до попередньої статті; автор пояснює, як експортувати GraphQL запити з компонентів React, щоб використовувати їх в Rails-додатку.
Добірка від Mehdi Farsi
The Перечіслімого module in Ruby: Part II — друга стаття, присвячена модулю Перечіслімого в Ruby.
Context Binding in Ruby — що таке context binding і як його використовувати в Ruby.
OpenStruct in Ruby — розбираємося, що таке клас OpenStruct в Ruby.
Struct in Ruby — вивчаємо клас Struct і типи структур в Ruby.
The autoload method in Ruby — як використовувати метод autoload в Ruby.
Статті, присвячені виправлення помилок у Ruby:
Добірка від Reflektive
From Service Objects to Interactors — інструкція, як реалізувати Service Object Pattern за допомогою гема Interactor .
Validators for Interactors — читайте, як реалізувати валідацію даних в интеракторах.
Добірка від RubyGuides
The Ultimate Guide to HTTP Requests in Ruby — освіжаємо в пам'яті, якими способами можна відправляти HTTP запити в додатку на Rails.
Solving the N-Queens Problem With Ruby — вправа для розуму — вирішуємо задачу про N-ферзів за допомогою Ruby.
Fast Lookup & Unique Elements With The Ruby Set Class — що таке sets в Ruby, як їх використовувати, а також у чому їх відмінність від arrays.
Добірка від Tom Copeland
Invalid or incomplete POST parameters — автор розбирає помилку, пов'язану з неправильними або неповними POST параметрами.
Safer JSON munging — як простіше і безпечніше вносити зміни в JSON-файли.
Добірка від Tomas Valent
Ruby logs and puts not shown in docker container logs — що робити, якщо логи Ruby не відображаються в логах контейнерів Docker.
Back to the primitive. Testing with simplicity — автор ділиться простим способом написання тестів в Rails.
How to configure RSpec in Ruby on Rails — новачкам буде корисно дізнатися, як налаштувати тест-фреймворк RSpec в Ruby on Rails.
Convert string «true» and string «false» to boolean with Rails — як перетворити рядка true і false булеві вирази в Rails.
Factory Bot trait for attaching Active Storage has_attached — як створити Factory Bot об'єкт з файлом, прикріпленим за допомогою Active Storage, використовуючи метод договорі.
Metaprogramming Ruby cheatcheat — шпаргалка по метапрограммированию в Ruby.
Is Rails still relevant in 2018? — автор ділиться думкою про актуальність Ruby on Rails в 2018 році.
Google Maps in Rails with Coffee Script — простий гайд, як інтегрувати Google Maps в додаток на Rails.
Добірка від Богдана Деньковича
References to changes in Rails 5.2 — добірка посилань про нововведення в Rails 5.2.
Array#extract! to Active Support 6.0 — автор показує, як додати метод Array#extract! У Active Support 6.0.
Туторіали
Upgrade Rails from 5.1 to 5.2 — як оновити додаток з Rails 5.1 до Rails 5.2.
Configuring Circle CI 2.0 for a Real Rails Application — короткий туторіал по налаштуванню CircleCI 2.0 для програми на Rails.
Discover Rails: Active Record — автор показує, як створити власний Active Record в Rails.
Build a collaborative playlist over WhatsApp with Rails, Twilio, and Spotify — детальна інструкція, як створити спільний плейлист для WhatsApp за допомогою Rails, Twilio і Spotify.
How to use trained Keras and TensorFlow machine learning models within Ruby on Rails — детальна інструкція, як інтегрувати побудовану за допомогою Keras і TensorFlow модель машинного навчання в додаток на Rails.
How I Write Model Tests (Part 1) — автор докладно розповідає, як писати тести моделей в RSpec.
Using development dependencies from git in your gem — якщо ви пишете геми, то вам корисно буде дізнатися, як використовувати код з GitHub як development dependencies.
Learning How To Deploy Rails — як розгорнути Rails-додаток за допомогою таких інструментів, як Nginx, Passenger і Capistrano.
Connecting to the Apple Music from API a Ruby (on Rails) application — вчимося інтегрувати Rails-додаток з Apple Music API.
Writing a Gem with native extensions — автор показує, як написати гем з нативними розширеннями.
Password Generation in Ruby and Rust — порівнюємо, як реалізувати генерацію паролів в Ruby і Rust.
Релізи
Rails 5.2.1 — вийшла стабільна версія 5.2.1 фреймворку Ruby on Rails.
Hanami v1.3.0.beta1 — реліз першої бета-версії v1.3.0.beta1 фреймворку Hanami.
RSpec 3.8 — викотили нову версію 3.8 популярного тест-фреймворку RSpec.
RubyMine 2018.2.2 (build 182.4129.29) — компанія JetBrains представила нову збірку RubyMine 2018.2.2.
Ruby Gems
Paraspec — гем запускає RSpec тести в кілька потоків, прискорюючи тестування коду.
SidekiqLogAnalyser генерує звіт воркеров Sidekiq на основі лог-файлу.
Події
Ruby Meditation #23 — 15 вересня в Одесі пройде Ruby Meditation #23; серед спікерів буде Nick Sutterer — творець фреймворку Trailblazer.
Rails Girls Poznan — 21 та 22 вересня у польському місті Познань пройде безкоштовний дводенний воркшоп Rails Girls.
Послухати
Ruby Testing Culture with Jason Swett — ведучий і гість подкасту обговорюють культуру тестування в Ruby.
The Bike Shed
165: The Tables Have Turned — провідні зачіпають безліч тем — від CI/CD до структури команди розробників.
166: Services Are the New Rewrite? — основна тема подкасту — Service Oriented Architecture (SOA).
167: I Feel Like We Should've Solved This By Now — ведучий і гість подкасту German Velasco обговорюють віддалену роботу, мови програмування Elixir і Erlang, блокчейн і Ethereum і багато іншого.
Ruby Rogues
RR 374: Ruby 2.5 Перечіслімого Predicates Accept Pattern Argument with Prathamesh Sonpatki — головна тема подкасту — Rails 5.
RR 375: How to Contribute to Ruby with Sihui Huang — гість подкасту — Sihui Huang з компанії Gusto — розповідає про свій досвід розробки на Ruby.
RR 376: Ruby Performance with Nate Berkopec — учасники дискусії обговорюють продуктивність Ruby, а також багато інші цікаві теми.
RR 377: Upgrading a Rails application incrementally Luke with Francl — провідні і гість подкасту Luke Francl з команди GitHub обговорюють безліч тем, в тому числі оновлення додатків на Rails і купівлю GitHub компанією Microsoft.
RWpod
- 31 випуск 06 сезону. Ember 3.3, Ruby 2.6 added options to Exception#full_message, Fusion.js та інше
- 32 випуск 06 сезону. Rails 5.2.1, TLS 1.3, Babel 7.0.0-rc.1, Vue CLI 3.0, Kimurai, Foxr, SuperSlide.js, Wexond та інше
- 33 випуск 06 сезону. Ruby 2.6 adds write_timeout to Net::HTTP, 7 of the Best Code Playgrounds, TheoremJS та інше
- 34 випуск 06 сезону. Go WebAssembly, Best image uploader for Rails, VueToolbox, Size-plugin, Windows 95 running in an Electron та інше
The Ruby Testing Podcast
Episode 5 — How Brittany Martin Got Started with Programming and Testing — гість подкасту — Brittany Martin — розповідає про свою кар'єру в тестуванні і розробці на Ruby.
Episode 6 — Continuous Integration/Deployment/Delivery with Marko Anastasov — подкаст присвячений continuous integration/delivery/deployment.
Episode 7 — Testing Anti-Patterns with Kostis Kapelonis — ведучий і гість обговорюють, як не треба тестувати.
Подивитися
Підбірка відео з конференції EuRuKo 2018:
- EuRuKo 2018 Introduction
- Yukihiro Matsumoto — Keynote
- Chris Salzberg — Metaprogramming for generalists
- Joannah Nanjekye — Ruby in containers
- Damir Zeki? — Tool belt of a seasoned bug hunter
- Igor Morozov — Ducks and monads: wonders of types Ruby
- Brad Urani — Rails anti-patterns: how not to your database design
- Coraline Ada Ehmke — The broken promise of Open Source
- Louisa Barrett — Ruby not red: color theory for the rest of us
- Day 2 Welcome
- Nadia Odunayo — The case of the missing method — a Ruby mystery story
- Pitch the next EuRuKo's location
- Ana Mar?a Mart?nez G?mez — let's refactor some Ruby code
- Pan Thomakos — Debugging adventures in Rack-land
- Lightning talks
- Kerstin Puschke — Scaling a monolith isn't scaling microservices
- Amr Abdelwahab — An empathy exercise: contextualising the question of privilege
Випуски GoRails в серпні , в яких ведучий показує, як реалізувати реферальну програму з нуля і з допомогою Stripe, як підписувати Stripe webhooks, а також як додати автовизначення часового поясу в додатку на Rails:
- Payments with Stripe: Affiliate & Referrals Programs with Stripe & Rewardful
- User Referral Program From Scratch
- Stripe Signed Webhooks
- Auto-detect User Time Zones in Rails
Підбірка платних скрінкасти від Drifting Ruby за серпень:
- #145 Improving Partial Loading Performance
- #146 Rails API Documentation
- #147 State Machines with AASM
- #148 ActiveRecord Callbacks
Випуски платних скрінкасти від Ruby Tapas у серпні:
- Episode #539 Better Code with Mutant
- Episode #540 Ruby Spelunking
- Episode #541 Abstraction and Performance — Part 1
- Episode #542 Abstraction and Performance — Part 2
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.
? Попередній випуск: Ruby дайджест #20
Опубліковано: 01/09/18 @ 07:00
Розділ Блоги
Рекомендуємо:
DOU Проектор: Escapewithpro — наш досвід розробки travel-сервісу для бронювання турів
Python Challenge, або Як я ознайомився з автоматизованим тестуванням за місяць
7 причин жити і працювати в Харкові для IT-спеціаліста
Релокация в американську глибинку: мої 4 роки у Вісконсині
Product Management дайджест #5: правильні роадмапы, ефект Рингельмана і кращі доповіді з Mind the Product SF