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.
Doing more on reads vs writes — автор делится мнением о балансе между сложностью чтения и записи данных.
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 to not raise exception for Integer, Float methods — в Ruby 2.6 появилась возможность не поднимать исключения при использовании методов Integer и Float.
Подборка от Cezar Halmagean
What Is Ruby Used For? — полезная статья для новичков, в которой автор рассказывает о языке 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 Enumerable and Why Would You Use It? — для чего нужен модуль Enumerable в Ruby и как его использовать.
Why You Too Should Learn Elixir — почему Ruby/Rails разработчикам полезно изучать язык программирования Elixir.
If vs. Unless in Ruby — вспоминаем, чем отличаются операторы if и unless.
Ruby’s Sort and 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 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 Native with Rails OAuth API Authentication — Part 1
- React Native with Rails OAuth API Authentication — Part 2
- React Native with 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 are objects 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
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #19