Всем привет! Ruby/Rails дайджест за апрель посвящен фреймворку Hanami не просто так. В апреле Hanami обновился до версии 1.0.0, поэтому обратите внимание на подборку материалов о фреймворке. Также в новом дайджесте ищите чек-лист по мерам безопасности в Rails, подборку полезных советов и скрытых возможностей в Ruby и много других интересных статей.
Почитать
Безопасность
Ruby on Rails Web Application Vulnerabilities: How to Make Your App Secure‒ лонгрид о наиболее распространенных проблемах безопасности Rails-приложений. Обязательно к прочтению для тех, кто заботится о безопасности в Rails.
One Line of Code that Compromises Your Server‒ Session secret ‒ ключ для шифрования cookies. В статье объясняется, как взламывают этот ключ и с какими потенциальными угрозами для application-сервера вы можете столкнуться.
Resilience in Ruby: Handling Failure‒ если вы решили больше не хранить все данные приложения в одной базе данных и разделить их, статья поможет вам справиться с этой задачей и предотвратить возможные неудачи.
Zen Rails Security Checklist‒ чек-лист по мерам безопасности, которые стоит учесть при разработке Rails-приложений.
Тестирование
5 Tips for More Effective Capybara Tests‒ Capybara ‒ популярный фреймворк для тестирования веб-приложений, любимый многими. Тем не менее, 5 советов для более эффективного тестирования с Capybara не будут лишними и для опытных разработчиков.
Yardcheck: Validate YARD docs by running your test suite ‒ гем Yardcheck проверяет корректность YARD типов, прогоняя комплексные тесты.
Full-Stack Testing with Rails System Tests‒ статья о подходе Rails 5.1 к системным тестам и их преимуществах как для для олдскульных интеграционных тестов, так и текущих решений для тестирования на базе Capybara.
Производительность
The Rubyist’s Guide to Memoization‒ мемоизация ‒ один из способов улучшить производительность программного обеспечения. Детальные примеры в статье раскрывают суть мемоизации.
Monitoring Sidekiq Using AWS Lambda and CloudWatch‒ интересный кейс об использовании AWS Lambda для визуализации данных о enqueued jobs и повторных передачах Sidekiq.
GraphQL::QueryResolver: Minimize N+1 queries generated by GraphQL and ActiveRecord‒ GraphQL:: Query Resolver позволяет минимизировать запросы N+1, которые генерируются GraphQL и ActiveRecord.
ActiveJob::TrafficControl: Rate limiting/job enabling for ActiveJob using distributed locks in Redis or Memcached‒ гем ActiveJob::TrafficControl предоставляет возможность устанавливать паузы и лимиты на запуск задач для ActiveJob c помощью распределенных блокировок.
GitHub::DS: A collection of Ruby libraries for working with SQL on top of ActiveRecord’s connection‒ GitHub::DS ‒ это коллекция Ruby-библиотек для работы с SQL наряду с подключениями ActiveRecord.
Jumping Off The Ruby Memory Cliff‒ Richard Schneeman объясняет, почему иногда использование RAM превышает лимит и как бороться с этой проблемой.
Improve your Ruby application’s memory usage and performance with jemalloc‒ библиотека jemalloc позволяет улучшить производительность Ruby-приложений до 10%, а также уменьшить использование RAM.
Разное
Ruby 2.4 series from BIGBinary‒ подборка статей по теме Ruby 2.4, которые держат разработчиков в курсе о новом функционале и обновлениях.
Rails Benchmarking: Puma and MultiProcess‒ бенчмаркинг Rails-приложений: Puma и MultiProcess.
Versioning a Rails API ‒ что вы получаете от контроля версий API, почему не стоит отказываться от этого и как обновить ваше приложение, чтобы оно заработало.
How I Wrote the HTTP-client for mruby‒ кейс о написании небольшого HTTP-клиента для mruby.
Ruby 101: Data Structures‒ статья для начинающих разработчиков о структуре данных в Ruby: array, hash, iteration.
Dry-Validation as a Schema Validation Layer for Ruby on Rails API‒ Legacy-код никогда не бывает таким, как нам бы хотелось. Но благодаря готовым решениям вроде библиотеки Dry-Validation ‒ одной из «мастхэв» библиотек для работы с разными видами входящих данных ‒ эта проблема решается.
A Ruby Shadowing Bug in the Wild‒ не все замечают затаившийся баг в Ruby, когда локальные переменные «заслоняют» методы класса. Tom Copeland рассказывает об этом подводном камне в Ruby.
All Rails Service Objects as One Ruby Class‒ Service objects становятся мейнстримом в Rails-сообществе; статья раскрывает суть service objects, заключенных в один класс.
Speed Up Your Sinatra Development with OpeningAct‒ OpeningAct ‒ гем, который предлагает простой шаблон для Sinatra, таким образом, вы можете полностью сосредоточиться на разработке вашего приложения.
Idiosyncratic Ruby: Documenting All Ruby Specialities‒ подборка различных приемов и хитростей в Ruby, а также сравнений, советов и много других полезных вещей.
Support of Ruby 2.1 Has Ended‒ Ruby 2.1 больше не поддерживается. Рекомендуется как можно быстрее перейти на Ruby 2.3 или Ruby 2.4.
Послушать
TinyTDS, Databases, and SQL Server with Ken Collins‒ авторы подкаста Ruby Rouges обсуждают TinyTDS, базы данных и SQL сервер вместе с Ken Collins ‒ автором SQL Server Adapter for Active Records и TinyTDS.
The Rails 5 Way with Obie Fernandez‒ звездный гость очередного подкаста Ruby Rouges ‒ Obie Fernandez, автор The Rails 5 Way.
Migrating from redis-namespace, Rooby, Headless Chromium, CodeSandbox, Prettier и прочее ‒ новый выпуск подкаста от RWpod включает в себя темы по Ruby (дополнительные параметры для Logger в Ruby 2.4, обсуждение полезных гемов) и JavaScript.
Посмотреть
Using Webpack in Rails with the Webpacker Gem‒ скринкаст с гемом Webpacker для создания современных frontend решений JavaScript в вашем Rails-приложении.
Ruby Snack #60: Create New Rails App with Docker‒ в очередном скринкасте RubyThursday объясняется, как с помощью Dockerfile и docker-compose.yml файла создать новое Rails-приложение.
Ruby Snack #61: Rails Development Flow with Docker‒ продолжение предыдущего скринкаста о разработке Rails-приложения с Docker.
Туториалы
Ruby on Rails 5.1.0 Deprecations‒ перечень устаревших методов в Rails 5.1.0.
Configuring New Rails Projects With .railsrc and Templates‒ конфигурация новых Rails-проектов с помощью .railsrc файла и templates.
Action Cable ‘Hello World’ with Rails 5.1‒ пошаговый туториал объясняет, как отправить HTML-код из консоли в уже загруженную веб-страницу.
Slim down hefty Rails controllers AND models, using domain model events‒ статья (а также скринкаст в ней) объясняет рефакторинг-технику для следования гайдлайну «fat model, skinny controller».
Importing Invalid Legacy Data with Rails‒ туториал о том, как импортировать legacy-код, несовместимый с вашим новым Rails-приложением.
How to Recover from Rails Database Schema Conflicts When Rebasing‒ туториал по пошаговом решении конфликтов при изменении версии схемы после мержа изменений.
Stop Using Case Statements in Ruby‒ при проверке классовых типов данных, лучше избегать использования case statements и прибегать к полиморфизму. Туториал объясняет, как решить проблему case statements.
Релизы
www.faecms.com‒ новая open-source CMS на Rails с удобным интерфейсом и функционалом: отслеживанием изменений, глобальным поиском, инструментом для загрузки и обработки изображений и др.
Hanami
Hanami v1.0.0‒ в апреле вышел релиз Hanami v1.0.0. Это ‒ маленькая победа для сравнительно свежего фреймворка (работа над Hanami началась в 2012 году). Релиз включает в себя новые версии гемов:
- hanami-1.0.0
- hanami-model-1.0.0
- hanami-utils-1.0.0
- hanami-validations-1.0.0
- hanami-router-1.0.0
- hanami-controller-1.0.0
- hanami-view-1.0.0
- hanami-helpers-1.0.0
- hanami-mailer-1.0.0
- hanami-assets-1.0.0
Также мы подготовили интересные статьи по теме, которые дадут вам возможность узнать побольше о фреймворке Hanami, сравнить его с Ruby on Rails и познакомиться с его возможностями.
What I learned Building an App in Hanami‒ вопрос «Hanami лучше, чем Rails?» интересует многих. В статье рассказывается об опыте создания приложения на Hanami.
Rails vs Hamani‒ сравнение Rails и Hanami по многим фронтам: структуре каталогов, действиям контроллеров, application routing, view helpers и другим.
From Rails to Hanami (Lotus) Part 1: Container Architecture, Models, Views and Assets‒ лонгрид о переходе с Rails на Hanami, а также
Hanami Trick: Default Template for Mailers‒ статья о создании стандартных шаблонов для email’ов.
Uploading Files with Shrine in Hanami‒ Shrine ‒ гем, который реализует загрузку файлов в Hanami. Пошаговый туториал объясняет, как реализовать функционал загрузки файлов с Shrine.
How to Run Hanami in RubyMine‒ туториал по запуску Hanami в RubyMine.
Using Sidekiq with Hanami‒ Sidekiq ‒ популярный гем для отложенных задач в Rails. В статье объясняется, как интегрировать Sidekiq в Hanami.
Библиотеки
GoogleCloud: The Google Cloud client library for Ruby‒ библиотека предоставляет API для интеграции с сервисами Google Cloud Platform.
Postal ‒ полноценный mail server для веб-сайтов и веб-серверов, который быстро попал в топ рейтинга Trending на GitHub, получив более 2600 звезд.
Книги
Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, Efficient, Full-Stack Web Development‒ 25 июня в издательстве The Pragmatic Programer выходит второе издание книги Rails, Angular, Postgres, and Bootstrap: Powerful, Effective, Efficient, Full-Stack Web Development.Уже можно оформить предзаказ.
Effective Testing with RSpec 3‒ также в июне выйдет книга Effective Testing with RSpec 3 в O’Reilly Media. Предзаказ уже открыт.
Functional Web Development with Elixir, OTP, and Phoenix‒ Elixir-комьюнити активно развивается. Новая книга по веб-разработке с Elixir выходит 10 октября на The Pragmatic Bookshelf, электронная версия книги уже доступна.
События
Ruby Meditation #15‒ 13 мая в Днепре впервые пройдет митап Ruby Meditation. Полная agenda и детали ивента по ссылке.
#pivorak 22‒ 28 апреля во Львове митап #pivorak собирает спикеров с темами Secret Life of Git, Data & Bounded Contexts, Strong and weak sides of Golang in production.И, как всегда, будет традиционная афтепати в стиле #pivorak.
Rails DDD Workshop in Lviv with Andrzej Krzywda‒ 25 мая во Львове разработчики Andrzej Krzywda и Robert Pankowecki из Arkency проведут Rails Domain Driven Design Workshop.
Организаторы конференции RubyC 2017, которая состоится
Ruby Meditation #16‒ 16 июля солнечная Одесса встречает митап Ruby Meditation. Билетов в продаже пока нет, ждем agenda и старт продаж.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на volodymyr.vorobiov@rubygarage.org. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #3