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-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, а також 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