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-додатків.

Тестування

? 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, pret-рівня та інше ? новий випуск подкасту від RWpod включає в себе теми Ruby (додаткові параметри для Logger в Ruby 2.4, обговорення корисних гемов) і JavaScript.

Подивитися

Using Webpack in with the Rails 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, порівняти його з 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, а також MVC-архітектурі 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 , яка відбудеться 3-4 червня в Києві, оголосила фінальний список спікерів та їх тим, так що не забудьте купити квиток ? літо не за горами.

Ruby Meditation #16 ? 16 липня сонячна Одеса зустрічає митап Ruby Meditation. Квитків у продажу поки немає, чекаємо agenda і старт продажів.


Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.


? Попередній випуск: Ruby дайджест #3

Опубліковано: 28/04/17 @ 10:00
Розділ Різне

Рекомендуємо:

Thrive Leads - кращий плагін WordPress для збору e-mail передплатників
DOU Проектор: EMtracker - пристрій для розпізнавання стресових станів у близьких людей
Побудова Data Science команди в аутсорсинговій компанії
Інформаційні сайти: три шляхи для старту
Python digest #13: GTA V with Python