Ruby/Rails дайджест #4: Hanami v.1.0.0, чек-лист по безопасности в Rails и Idiosyncratic Ruby
Всем привет! 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 Rogues обсуждают TinyTDS, базы данных и SQL сервер вместе с Ken Collins ‒ автором SQL Server Adapter for Active Records и TinyTDS.
The Rails 5 Way with Obie Fernandez ‒ звездный гость очередного подкаста Ruby Rogues ‒ 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 и старт продаж.
Касательно тем/материалов/ивентов, которые стоит добавить в следующий выпуск дайджеста, пишите в комментариях или на
Данный адрес e-mail защищен от спам-ботов, Вам необходимо включить Javascript для его просмотра.
. Спасибо за помощь в подготовке дайджеста команде RubyGarage.
← Предыдущий выпуск: Ruby дайджест #3