Ruby/Rails дайджест #8: реліз Active Storage, масштабується RoR чи все-таки ні, курси з вивчення Ruby/Rails
Всім привіт! У липні було багато гарячих новин, і ми хочемо поділитися ними в нашому дайджесті.
Пропонуємо вашій увазі новини про Active Storage, збірки статей про принципі SOLID, машинному навчанні та штучному інтелекті з використанням мови Ruby, дискусію про масштабованості Ruby on Rails, а також множинні туторіали та кейси на тематику Ruby/Rails. Не забудьте перевірити, які конференції проходять восени і що вас чекає на курсах з вивчення Ruby/Ruby on Rails від RubyGarage.
Почитати
Серія з п'яти статей, де кожному SOLID принципом присвячена окрема стаття та наводяться приклади, як можна використовувати ці принципи в Ruby:
- [S]OLID — Single Responsibility Principle by example — принцип єдиної відповідальності.
- S[O]LID — Open/Closed Principle by example — принцип відкритості/закритості.
- SO[L]ID — Liskov Substitution Principle — принцип підстановки Барбари Лисков.
- SOL[I]D — Interface Segregation Principle — принцип поділу інтерфейсу.
- SOLI[D] — Dependency Inversion Principle — принцип інверсії залежності.
How to test Rails app using Mocha JS and Chai JS ? — рекомендації, як інтегрувати JavaScript-бібліотеки Mocha JS і Chai JS в додаток Ruby on Rails для ще більш якісного тестування.
The Ultimate Guide to Blocks, Procs & Lambdas — з цього туториала ви дізнаєтеся, як працюють блоки в Ruby, яка існує різниця між procs і lambdas і про ефект «замикання», який виникає кожен раз, коли ви створюєте блок.
Графічний Benchmark Results in Ruby — іноді результати порівняльного тесту складно читати з-за великої кількості даних. Найкращий спосіб показати статистику продуктивності через графіки.
Running feature specs with Capybara and Chrome headless — у вигляді того, що Chrome дозволяє запуск браузера в середовищі без графічного інтерфейсу, підтримка PhantomJS перестала бути необхідною . Як налаштувати запуск feature specs з допомогою Capybara і Chrome без GUI, читайте в туториале.
Ruby on Rails Code Audits: 8 Steps to Review Your App — щоб додаток був якісним, варто звернути увагу на чекліст по контрольній перевірці коду програми на Rails.
Підбірка статей за липень від PracticalAI.io . Як інтегрувати машинне навчання і штучний інтелект в проекти по розробці програмного забезпечення з використанням мови Ruby:
- Implementing Simple Classification using a Neural Network in Ruby — реалізація простої класифікації за допомогою нейронної мережі.
- How to debug and diagnose Machine Learning problems — тестування і налагодження створених моделей.
- Implementing classification using a SVM in Ruby — реалізація класифікації з використанням Support vector machine (SVM).
How to get your Rails data into your React component with webpacker — гем webpacker — це простий спосіб використовувати бібліотеки JavaScript на Rails із застосуванням власних інструментів JS, таких як Yarn і Webpack. У туториале ви знайдете рішення, як передати дані Rails в компонент React з допомогою webpacker.
— база даних InfluxDB потрібна для зберігання тимчасових рядів, метрик та інформації про події. У цьому гайде дізнавайтеся про переваги, як працює і як краще використовувати InfluxDB на Ruby.
How to safely store API keys in Rails apps — поради, як безпечно зберігати API ключі в Rails додатках, автор розглядає всі за і проти кожного з підходів.
nil?, empty?, blank? in Ruby on Rails — what's the difference actually? — чи знаєте ви різницю між методами 'nil?', 'empty?', 'blank?', 'present?'? Це стандартні методи Ruby або вони включені в Rails? У статті пропонується розібратися, які методи і коли необхідно використовувати.
How to quickly add graphs and charts to Rails app — стаття про те, як швидко візуалізувати дані у додатку Rails з допомогою Google Charts.
Two Tests You Should Run Against Your Ruby Project Now — для вас важливі безпека і юзабіліті проектів, над якими ви працюєте? В такому випадку, дізнавайтесь більше про тестах «Security audit» і «Licensing audit» для створюваних Ruby додатків.
Спори про продуктивності фреймворку Rails не дають спокою спільноти RoR. Варто вибирати фреймворк Ruby on Rails для розробки web-додатків або є альтернативні варіанти? Будь-які думки мають право на висловлювання, найкраще ознайомитися з усіма думками і прийняти самостійне рішення:
- Is Ruby Too Slow For Web-Scale? — стаття про масштабованості Ruby on Rails і чому варто вибрати цей фреймворк для створення веб-додатки.
- Rails Web-Scale is Expensive — погляд на Rails з іншого боку і коментарі до попередньої статті: так, RoR масштабується, але в якийсь момент його використання обходиться дорого.
A Few RSpec Helpful Hints — корисні поради, які допоможуть спростити написання і читання RSpec тестів і заощадити час, що витрачається на виправлення помилок.
How I test Rails applications — якщо ви початківець розробник, ця стаття про різні види тестування Rails додатків буде відмінним гайдом. Автор ділиться кращими практиками в тестуванні, до яких він прийшов за чотири роки роботи з RoR.
How to avoid inheritance in Ruby? — у статті описуються три варіанти структурування коду — inheritance, mixins і composition — дізнайтеся, який з них краще підходить для вашого проекту.
Lint your Ruby code with Overcommit and static analysis tools — статичні аналізатори коду допомагають оптимізувати продуктивність і уникати проблем з безпекою. Дізнавайтеся в туториале, як з допомогою git hooks контролювати якість коду Ruby, RoR і Chef.
Implementing inheritance with params: CreateProducts < ActiveRecord::Migration[5.0] — з туториала ви дізнаєтеся, як виконувати спадкування з параметрами і навчитеся парочку цікавих трюків в Ruby.
Fast CSV Report Generation with Postgres in Rails — альтернативні рішення, як швидко згенерувати звіти користувачів у формат CSV з допомогою Postgres.
View Objects — The Way to Deal with Messy Rails Views — практичні рекомендації чому варто використовувати підхід View Objects.
Ruby concurrency: in praise of condition variables — стаття з серії concurrency в Ruby, у статті розповідається про проблеми consumer-producer і про те, як їх витончено вирішувати з допомогою condition variables.
Lessons Learned Integrating Rust with Ruby — слайди презентації Daniel P. Clark на митапе Rust DC, як краще інтегрувати Rust в Ruby.
Серія статей, використовуючи як Vue.js frontend і Rails API в єдиному репозиторії створити MVP додаток для книжкового магазину:
- Rails 5.1 with API Vue.js frontend, part 0: stack choices — введення в серію, де пояснюється вибір технологій для застосування.
- Rails 5.1 with API Vue.js frontend, part 1: Setting up a Rails API app — установка Rails програми і настроювання Rails API.
- Rails 5.1 with API Vue.js frontend, part 2: reality Modeling — моделювання структури програми.
- — керування версіями API.
- Rails 5.1 with API Vue.js frontend, part 4: Authentication and authorization — настройка аутентифікації та авторизації.
The battle for auditing and versioning in Rails — Audited vs Paper Trail — геми Audited та Trail реєструють всі зміни в моделях Rails. Вирішити, який гем підійде краще для вирішення ваших завдань допоможе порівняння з прикладами їх використання.
A Few RSpec Helpful Hints — пару корисних порад які допоможуть вам писати більш читабельні і підтримувані RSpec тести.
When distributed locks might be helpful in Ruby on Rails application — автор описує в статті, як визначити, чи може ваше Ruby on Rails додаток зіткнутися з проблемою паралелізму, і як її вирішити з допомогою distributed locks.
Preventing security issues in Ruby on Rails — чекліст щодо потенційних проблем безпеки RoR і як їх запобігти.
Realtime with React and Rails — на прикладі створення програми карти реального часу, що дозволяє транслювати ваше місце розташування, туториале пропонується освоїти, як працює Action Cable, і як використовувати WebSockets для впровадження функціоналу реального часу в додаток Rails.
Real World Rails Background Jobs — Rails програми можуть бути створені так, що вони виконують більшу частину роботи в фонових завдань. Пропонуємо ознайомитися зі списком різноманітних прикладів фонових завдань з реальних додатків для аналізу і вивчення.
Is it always a good idea to split long methods into smaller ones? An experiment — експеримент по розбивці довгих методів на частини для того, щоб підвищити читаність коду. Автор пропонує три способи, як це можна зробити краще.
Streaming Data with Ruby Enumerators — потокова передача дозволяє ефективно обробляти велику кількість даних. Але порівняно з Node.js Stream API, де потоки можуть бути легко скомпоновані, робота з потоковими даними в Ruby з використанням блоків незручна. У статті об'єднуються ідеї Node.js Streams з Ruby enumerables для створення композиційних потоків в Ruby, щоб масштабувати обробку веб-каналу до вражаючих темпів.
У липні нової функції для Rails 5.2 мало кого залишив байдужим. Active Storage спрощує завантаження і прив'язку файлів в хмарних сервісах, таких як Amazon S3 або Google Cloud Storage, і прикріплює ці файли до Active Records. Він також надає дисковий сервіс для тестування або локального розгортання, але основна увага приділяється хмарного сховища. Хоча ще рано робити висновки, що перші відгуки вже є:
- Upcoming built-in Upload Solution for Rails 5.2 ( ActiveStorage ) — загальне враження про використання ActiveStorage.
- Introduction to Active Storage — короткий туторіал, як налаштувати Active Storage.
How I Reduced my DB Server Load by 80% — рішення і рекомендації, як поліпшити швидкість завантаження сервера бази даних.
What skills should a junior Ruby on Rails developer have? — хочете стати гідним RoR розробником, або ви шукаєте відповідного програміста в свою команду? Перевірте чекліст навичок, які слід мати початківцю фахівця, щоб не тільки створювати програмне забезпечення, але і бути важливою частиною команди, роблячи вплив на продукт, який ви створюєте.
Tips to improve speed of your test suite — у статті ви знайдете лайвхаки, як поліпшити швидкість автотестів, щоб надалі виграти час при розробці.
Making iOS & Android apps with Rails & Turbolinks — базовий гайд, як з використанням Ruby on Rails і Turbolinks створити багатоплатформовий додаток під iOS і Android.
Scope the Monkey: Refinements in Ruby — поради, як зменшити кількість манки патчів з допомогою Ruby refinements.
On Rails Docker: Getting Started with Docker and Ruby on Rails — Docker — це відкрита платформа для розробки, доставки та експлуатації додатків. У цьому туториале ви знайдете практичні поради, як підготувати базове додаток Rails для використання в контейнері Docker.
API v2 Architecture and Hanami — кейс, як зробити трансфер нової версії API з Rails на Hanami.
— чудова новина для шанувальників RoR: кількість завантажень Rails на RubyGems вже перевищує кількість в 100 мільйонів.
— все ще є сумніви на рахунок масштабованості RoR? David Heinemeier Hansson (DHH) думає інакше.
Послухати
Продовження п'ятого сезону на каналі RWpod . Підбірка подкастів за липень:
- 26 випуск 05 сезону. Rails 5.1.2, Unicorn Unix Magic Tricks, Small Is Big, Browser loading module, React Native UI Kitten та інше
- 27 випуск 05 сезону. Upload Solution for Rails 5.2 (ActiveStorage), Real World Rails Background Jobs, Gatsby, Rebass та інше
- 28 випуск 05 сезону. Is Ruby Too Slow For Web-Scale?, Redis 4.0 GA, NodeJS: Constant HashTable Seeds Vulnerability та інше
- 29 випуск 05 сезону. Monitor and Debug Bottlenecks in Sidekiq, Enclose.IO, RenderReact, Popmotion, GPU.js та інше
The Bike Shed — канал, де ведучі та їх гості обговорюють свій досвід розробки і все, що привертає їх увагу щодо світу Ruby, Rails і JavaScript. У липні обговорення зачіпають тестування, спільноти розробників, уроки, витягнуті з минулих проектів, і виступи на конференціях:
- The Bike Shed #117: S. A. L. T. (Justin Searls)
- The Bike Shed #118: Nonsense In, Out Nonsense
- The Bike Shed #119: Questions Are For the Weak (Caleb Thompson & Matt Mongeau)
MRuby and Language Security with Daniel Bovensiepen — інтерв'ю — основного розробника MRuby. Daniel розповідає про Shopify і MRuby — спрощеної версії мови Ruby.
Світ Ruby/Ruby on Rails сповнений дивовижних і талановитих розробників. Завдяки підкастів Ruby Rogue — My Ruby Story ми маємо можливість познайомитися з ними ближче:
- Ruby Rogues: My Ruby Story #010 — Dave Kimura — шанувальникам популярного Ruby on Rails екрана і блогу Drifting Ruby буде цікаво дізнатися більше про його творця Dave Kimura.
- Ruby Rogues: My Ruby Story #011 — Greg Baugues — гість Greg Baugues, вже раніше виступав у подкастах Ruby Rogues. У цьому випуску Greg розповідає свою історію знайомства з мовою Ruby і досвід роботи в компанії Twilio.
- Ruby Rogues: My Ruby Story #012 — Simon Moro — в цьому епізоді гість Simon Moro розповість про самостійному вивченні Ruby і про свій підприємницький досвід.
Подкасти Ruby Rogue за липень, що стосуються програмування і спільноти Ruby:
- Ruby Rogues #317: Computer Science at University and the Future of Programming with Dave Thomas — інтерв'ю з Dave Thomas, автором декількох книг з програмування. Автор подкасту і гість говорять про курс комп'ютерних наук, який Dave веде в університеті, мовою Elixir і майбутньому програмування.
- Ruby Rogues #318: Metaprogramming with Jordan Hudgens — обговорення метапрограммирования з декількома експертами в цій сфері.
- Ruby Rogues #319: Machine Learning with Tyler Renelle — епізод присвячений машинного навчання, де своєю думкою і досвідом поділяться кілька учасників подкасту — Charles Max Wood, Dave Kimura і Tyler Renelle.
- Ruby Rogues #320: Shrine and File Uploads with Janko Mahronic — гість подкасту Janko Mahronic розповість про Shrine — інструмент, який надає безліч способів завантаження файлів.
Подивитися
Everything You Need to Know About Ruby Constants — скрінкасти з докладним описом про те, що потрібно знати про константах Ruby.
The Ultimate Guide to Ruby Sorting — з цього екрана ви дізнаєтеся, як використовувати методи sort і sort_by для сортування масивів і хешей в Ruby різними способами. Також ви дізнаєтеся про відмінності продуктивності і способи виконання алгоритму швидкого сортування.
Drifting Ruby #89 Creating Custom Ruby on Rails Generators — генератори Rails допомагають спростити і частково автоматизувати workflow розробника. За допомогою цього керівництва ви вивчіть, як створювати генератори і настроювати існуючі.
GORUCO 2017 — 24 червня в Нью-Йорку пройшла конференція GORUCO , яка об'єднує найкращі практики та досвід спільноти Ruby. Пропонуємо до перегляду відео з конференції. Також, на каналі Confreaks можна переглянути окремі виступи спікерів.
Go Rails #198 Debugging Ruby: How to Interpret a Stacktrace — стек-трейс — це перелік методів, які були викликані до моменту, коли в додатку сталося виняток. Скрінкасти пояснить, як аналізувати і розуміти Ruby стек-трейс, коли щось йде не так у вашому додатку.
Codemy School: Rails API — добірка навчальних відео про Rails API від CodemySchool .
Релізи та бібліотеки
Новини про релізах і доробках Ruby on Rails в липні — вихід Active Storage в Rails 5.2, запобігання неприпустимих PostgreSQL UUIDs, поліпшення, виправлення помилок і багато іншого:
- This Week in Rails: Active Storage, telling secrets and time travelling!
- Rails 5.0.5.rc2 and 5.1.3.rc2 have been released
RubyInstaller 2.4.1-2 released — в липні вийшло оновлення RubyInstaller для Windows.
mruby 1.3.0 released — вийшла нова версія MRuby, який є спрощеним варіантом мови Ruby.
Ruby-Compiler — достроковий вихід компілятора для Ruby, який дозволяє дуже швидко скомпілювати будь-який проект.
Maily — це Rails Engine для управління, тестування і навігації по всім вашим шаблонів електронної пошти вашого додатка.
ActiveStorage — ось так тепер будемо зберігати файли в Rails додатках.
Kbsecret — це бібліотека/утиліта, яка надає інтерфейс управління для KBFS і Keybase.
Genkan — механізм аутентифікації для Rails.
Graphql-guard — проста авторизація для graphql-ruby.
Crank-Starter — одностраничное додаток, натхнена Kickstarter. Ruby on Rails backend, React/Redux frontend.
Down — утиліта для потокової передачі, гнучкою і безпечного завантаження видалених файлів.
Data-Science-With-Ruby — практична Data Science з інструментами на основі Ruby.
Книги
Релізи:
The Rails 5 Way (4th Edition) — 27 листопада очікується вихід четвертого видання The Rails 5 Way , яке входить в Addison-Wesley Professional Ruby Series. Передзамовлення вже доступний.
Mastering Ruby Closures: A Guide to Blocks, Procs, and Lambdas — 25 грудня виходить перше видання книги Mastering Ruby Closures: A Guide to Blocks, Procs, and Lambdas. Вже можна зробити попереднє замовлення.
Рекомендації:
Introduction to Programming with Ruby — онлайн версія книгиIntroduction to Programming with Ruby — покрокове введення в програмування Ruby від Launch School .
Курси
Курси з Ruby/Ruby on Rails від RubyGarage — на початку жовтня стартують Ruby/Ruby on Rails курси від RubyGarage для тих, хто хоче освоїти професію «Web-розробник». Реєстрація на курс відкрита. Тестові завдання приймаються до 1 вересня.
Події
Rails Girls Жешув — митап Rails Girls в цей раз пройде з 16 по 17 вересня в місті Жешув, Польща. На сайті вже є розклад. Івент безкоштовний, але не забудьте зареєструватися.
RailsClub Moscow 2017 — у Москві 23 вересня пройде Ruby/Ruby on Rails конференція — RailsClub. Серед безлічі виступаючих будуть присутні Richard Schneeman, Piotr Solnica і Nick Sutterer!
EURUKO 2017 — з 20 по 30 вересня у Будапешті, Угорщина пройде щорічна європейська конференція EuRuKo 2017. Розклад вже складено. Серед численних спікерів виступають Yukihiro «Matz» Matsumoto — творець мови Ruby і один з розробників JRuby Charles Nutter.
? Попередній випуск: Ruby дайджест #7
Опубліковано: 05/08/17 @ 10:00
Розділ Блоги
Рекомендуємо:
VR/AR – 5 вирішальних факторів розвитку технології
Інфо-сайти: підсумки липня 2017. Тримаємо темп не дивлячись на літо
Кейс: Виведення сайту медичного лазерного центру в Казахстані в лідери ніші
Піти з Grammarly заради навчання в КПІ: чи варта шкурка вичинки
Рекрутеру на замітку: співбесіда з техрайтером