Ruby/Rails дайджест #16: офіційний реліз Rails 5.0.7 і 5.1.6, нова бета-версія Hanami, створюємо Slack bot на Rails
Всім привіт! Березень потішив Ruby-спільнота безліччю цікавих подій.
Насамперед, вийшли офіційні версії Rails 5.0.7 і 5.1.6, а також бета-версія фреймворку Hanami — v1.2.0.beta2. По-друге, з'явилися перші бенчмарки превью-версії Ruby 2.6 із JIT. Також зверніть увагу на статті Daniel P. Clark про Vue.js як фронтенд-фреймворку для додатків на Rails.
Почитати
Ruby 2.6 preview 1: Timing JIT — в кінці лютого вийшла превью-версія Ruby 2.6, а вже в березні з'явилися перші бенчмарки. Наскільки ефективний JIT-компілятор? Усі відповіді — у статті.
Towards The Ruby 3?3 Performance Goal — дізнайтеся, як спільнота Ruby працює над проектом CRuby і зможе версія 3 в три рази перевершує по продуктивності версію 2.
If the OS landscape was disrupted, would Ruby have survived until today?! — Keynote by Mr. Yukihiro «Matz» Matsumoto at Ruby25 — не пропустіть головне з мови творця мови Ruby Юкихиро Мацумото (Matz) на конференції Ruby25.
A New Ruby Application Server: NGINX Unit — оглядова стаття про те, наскільки сервер додатків Nginx підходить для додатків на Ruby.
TIOBE Index for March 2018 — Ruby витіснив Delphi першої десятки рейтингу популярності мов програмування за версією TIOBE.
Passenger 5.2.2: passenger_base_uri fixed, new Phusion product spoiler — якщо ваш додаток використовує сервер Passenger, то саме час зробити апгрейд до версії 5.2.2. У статті йдеться, як це зробити.
— автор докладно розповідає про переваги RabbitMQ в порівнянні з Sidekiq при роботі з фоновими завданнями.
Practical Differences between Working in Ruby and iOS — на основі власного досвіду автор порівнює розробку на Ruby і Swift; стаття буде корисна full-stack програмістам, а також тим Ruby-програмістам, які збираються спробувати себе в мобільній розробкою під iOS.
My thoughts on Hanami — Райан Бигг ділиться своєю думкою про Ruby-фреймворку Hanami.
Implementing a basic debug mode for your Ruby CLI — автор детально описує, як налаштувати повідомлення про помилки з допомогою імплементації налагоджувального режиму для Ruby CLI.
How I Built Timeasure: Part 1 — Motivation & Method Wrapping — перша стаття з циклу, в якій автор детально описує процес створення гема Timeasure.
Solving CAPTCHAs with TensorFlow and Ruby — дізнайтеся, як навчити Ruby-додаток автоматично долати капчі за допомогою інструменту TensorFlow.
Using `yield_self` for composable ActiveRecord relations — автор розповідає про те, як метод yield_self можна використовувати в роботі з Active Record.
Why proxying Bugsnag (or similar service) might be a good idea? — на прикладі сервісу перевірки якості коду Bugsnag автор показує, як проксировать повідомлення про помилки через back end.
An overview of Desktop Ruby GUI development in 2018 — короткий огляд інструментів для створення desktop-додатків на Ruby.
Setting up a Rails app for CodeBuild, CodeDeploy, and CodePipeline on AWS — читайте, як налаштувати continuous integration/delivery/deployment Rails-додатки за допомогою сервісів AWS.
The correct emails configuration in Rails — прості поради про те, як правильно налаштувати відправку імейлів в Rails-додатках.
Ruby on Rails: 5 to Make Checks Before Launching Your App — чек-лист по пунктах, на які варто звернути увагу перед запуском вашого Ruby on Rails програми.
Use Ruby Objects to Keep Your Rake Tasks Clean — автор ділиться досвідом оптимізації Rake-завдання з допомогою об'єктів в Ruby.
Why Service Objects are an Anti-Pattern — багато Ruby-розробники використовують service objects в Rails-додатках, однак автор статті вважає цей підхід є невірним. Дізнайтеся чому!
Introducing Blueprinter — Blueprinter — новий інструмент для форматування і серіалізації API.
Is Ruby on Rails a Good Framework for Building a SaaS product? — у статті детально розібраний питання, наскільки Ruby on Rails підходить для створення SaaS-додатків.
Qyu: A distributed task execution system for complex workflows — автор розповідає про новий інструмент для розподілу завдань для Ruby.
Better passwords in Ruby applications with the Pwned Passwords API — якщо ви хочете забезпечити максимальний рівень захисту облікових записів користувачів, використовуйте Pwned Passwords API.
From Rails to Clojure, then to Java, then back to Rails — почитайте думку автора про декількох мовах програмування, а також плюси і мінуси кожного з них.
Rails test coverage: Measuring what matters with SimpleCov — стаття розповідає, чому важливо аналізувати ступінь покриття коду тестами за допомогою бібліотеки SimpleCov.
Why should you learn multiple programming languages? — навіть якщо ви першокласний фахівець з Ruby, не варто нехтувати іншими мовами програмування. Чому? Автор ділиться своєю думкою.
Monitoring Sidekiq Using AWS Lambda and Cloudwatch — функціоналу Sidekiq може бути недостатньо для аналізу обробки фонових завдань; дана стаття розповість, як це виправити за допомогою AWS Lambda.
Ruby Benchmarking — якщо ви будуєте велике додаток на Ruby, то напевно ви хочете виміряти його продуктивність. Стаття ознайомить вас з тим, як якісно протестувати програму.
Добірка від Mensfeld
- Kafka on Rails: Using Kafka with Ruby on Rails — Part 2 — Getting started with Ruby and Kafka — у другій статті про Apache Kafka автор розповідає, як запустити Kafka в Docker контейнері і налаштувати message publishing з Rails додатки з допомогою WaterDrop.
- Karafka framework 1.2.0 Release Notes (Ruby + Kafka) — ознайомтеся з докладним описом нової версії фреймворку Karafka для Apache Kafka.
Добірка від Arkency
- Rails Event Store — better APIs coming — стаття розповідає про нових APIs в Rails Event Store v0.26.
- Using singleton objects as default arguments in Ruby — автор показує, як використовувати сінглтон-об'єкти в якості параметрів за замовчуванням.
- Ruby Event Store — use without Rails — дізнайтеся, які покращення чекають на вас в Ruby Event Store v0.27.
Добірка від Engine Yard
- Memcached Security aka don't Attack GitHub — нещодавно хакери використовували Memcached-сервер для атаки GitHub. У статті про те, як захистити Rails-додаток від подібних атак.
- Ajax on Rails with Unobtrusive JavaScript — автор докладно розповідає, як використовувати Ajax в Rails-додатках.
- Pros and Cons of DevOps as a Service — дізнайтеся про плюси і мінуси послуги DevOps as a Service.
- Using and Rails Vue JS, Part 1 — перша стаття з циклу про використання JavaScript фреймворку Vue.js при створенні Rails-додатки.
- Rails Encrypted Credentials Use AES 128-bit Key — стаття відповідає на питання, чи безпечно 128-бітове шифрування в функції Credentials в Ruby 5.2.
Добірка від BigBinary
GPG decryption without pin entry pop up using GPGME — коротке керівництво про те, як розкодувати файли, зашифровані за допомогою інструменту GnuPG (він же GPG).
Також продовження серії статей про Ruby 2.5:
- Ruby 2.5 prints backtrace and error message in reverse order — автор показує, як Ruby 2.5 полегшує налагодження вихідного коду завдяки зворотного структурі повідомлення про помилки.
- Ruby 2.5 adds Exception#full_message method — в Ruby 2.5 доданий новий метод, що дозволяє відображати оброблені виключення так само, як і необроблені.
Добірка від AppSignal
- Fragment caching in Rails — дізнайтеся, як прискорити роботу додатків з допомогою кешування фрагментів коду.
- Exceptions in Ruby — автор на прикладах розповідає про типи виключень в Ruby.
Добірка від Pawe? D?browski
- Build your own RSpec — introduction to DSL and metaprogramming — автор показує, як за допомогою DSL і метапрограммирования можна створити аналог RSpec, популярного фреймворку для тестування Rails-додатків.
- Ruby on Rails — your own slow query log, no sql configuration required — стаття показує, як документувати повільні запити в Ruby on Rails; це полегшує рефакторинг коду і допомагає розробникам прискорити роботу додатків.
- 4 ways to refactor and speed up RSpec tests — дізнайтеся про 4 способи провести переформатування та прискорити тести, написані за допомогою RSpec.
- 3 things that slow down and make your RSpec tests worse — поради щодо прискорення тестів на RSpec.
- 4 cool less known Rails features — part 1: ActiveJob, ActiveModel, command line — перша частина циклу статей, в якому автор ділиться досвідом і розповідає про деяких маловідомих можливості Ruby on Rails.
Добірка від Nopio
- How to Setup Application on Rails Heroku — Redis, Sidekiq, Action Cable and Cron Configuration — стаття описує процес установки Rails-додатки на хостинг Heroku, детально зупиняючись на настроювання окремих елементів інфраструктури.
- Blockchain App with Ruby — блокчейн — одна з найгарячіших тем в світі технологій; ця стаття розповість вам, як створити децентралізоване додаток на Ruby.
Добірка від End Point
- Multi-Tenant Architecture — автор розповідає про те, як реалізувати multi-tenant архітектуру в Rails-додатках за допомогою гема Apartment.
- Rails Active Storage — дізнайтеся, як за допомогою Active Storage в Rails 5.2 можна завантажувати файли в хмарні сховища (AWS, Google Cloud і Microsoft Azure).
Туторіали
Capistrano deploy to ubuntu with systemd, nginx/puma and rbenv — туторіал по розгортанню додатка і (або) середовища розробки на одному сервері за допомогою Capistrano.
Bare Bones Rails Action Cable Tutorial — туторіал по створенню чат-сервера за допомогою Action Cable.
Upgrade Rails from 4.2 to 5.0 — стаття звертає увагу на найважливіші аспекти при оновленні Rails-додатки з версії 4.2 до 5.0.
How to Track Down and Fix Slow Active Record SQL Запити in Rails — незадоволені продуктивністю свого Rails-додатки? Не поспішайте вносити зміни в стак, можливо, проблема в базі даних, а цей туторіал навчить вас оптимізувати роботу Active Record SQL запитів.
How i've Built a Profitable Slack Bot as a Side Project in Rails — чатботы стають все більш популярні; почитайте, як створити Slack-бота за допомогою Ruby on Rails.
The Proxy pattern revisited — дізнайтеся, як використовувати Proxy дизайн-патерн за допомогою методу Module#prepend.
How to run Capybara feature specs with Selenium and headless Chrome — CircleCI 2.0 case study — туторіал вчить, як уникнути проблем з популярними інструментами Capybara і Selenium при переході з CircleCI 1.0 CircleCI 2.0.
Yes, Ruby 1.9 can support TLSv1.2! — чи можна використовувати TLSv1.2. у додатку на Ruby 1.9? Так! І цей туторіал покаже, що треба робити.
Only use named scopes outside models — як поліпшити організацію коду і збільшити продуктивність, використовуючи зазначені області дії.
Memoizing in Ruby — туторіал по оптимізації роботи програми за допомогою мемоизации.
The Local Variable Aversion Antipattern — багато Ruby-розробники уникають локальних змінних, воліючи витягнуті методи, однак наскільки цей підхід гарний? Автор ділиться досвідом і показує, як можна використовувати локальні змінні.
Grpc Tutorial With Ruby — автор вирішив оновити керівництво по налаштуванню grpc для Ruby.
Convert an ActiveRecord object into the fixture — туторіал демонструє, як перетворити об'єкт ActiveRecord в yaml формат.
Refactoring with views Ruby on Rails' ActiveSupport helpers — автор ділиться досвідом рефакторінгу коду за допомогою інструментарію ActiveSupport.
JSON API Phase 3: Server API — третя з чотирьох статей циклу про розробку API за допомогою Express і Swagger; в цій частині описується процес створення API сервера.
Dry Behaviour aka Protocol Pattern in Ruby — як використовувати патерн Protocol при створенні програми на Ruby.
Managing db schema changes without downtime — автор показує, як уникнути проблем при змінах схеми даних в Rails-додатку.
JSONify your Ruby Translations — дізнайтеся, як використовувати формат JSON для Ruby трансляцій.
How to test logs using RSpec expectations and StringIO in Ruby — стаття показує два способи тестування логів.
UPGRADING TO RAILS 5.1 X — розробник компанії RED Panthers ділиться досвідом оновлення одного з продуктів до версії Rails 5.1.
Focused `puts` with debugging STDERR — туторіал допоможе провести налагодження не тільки написаного вами коду, але також коду використовуваних вами гемов.
Elapsed time with Ruby, the right way — дізнайтеся, як правильно запрограмувати підрахунок часу виконання в Ruby-додатку.
JetRockets
- How we started using Redux-Form in our Rails apps — якщо ви використовуєте фреймворк React для фронтенда у своєму Rails-додатку, то цей туторіал покаже вам, як використовувати Redux і Redux-Form.
- Protocol OAuth2: let's play with Doorkeeper & Omniauth/OAuth2. Part 1. — перша стаття з циклу про протоколі OAuth2 розповідає, як створити сервіс авторизації за допомогою Rails і Doorkeeper.
RubyGuides
- The Definitive Guide to Loops in Ruby — стаття навчить вас декільком способам створювати цикли в Ruby.
- How to Write a Ruby C Extension — автор детально описує, як створити розширення C для збільшення продуктивності Ruby-додатків.
Codeship
- VueJS as a Frontend for Rails — популярність Vue.js зростає і саме час дізнатися, як використовувати його в якості frontend-фреймоворка в Rails-додатках.
- VueJS Components with CoffeeScript for Rails — продовження попередньої статті; автор показує, як використовувати компоненти Vue.JS з допомогою CoffeeScript в Ruby on Rails.
Релізи
Rails 5.0.7 and 5.1.6 have been released — офіційно вийшли нові версії Rails: 5.0.7 і 5.1.6. Дізнайтеся, що змінилося в порівнянні з попередніми версіями!
Announcing Hanami v1.2.0.beta2 — вийшла бета-версія фреймворку Hanami v1.2.0.beta2.
Rails 5.2.0 RC2: Active Storage, Redis Cache Store, HTTP/2 Early Hints, CSP, Credentials — Rails-спільнота завершує роботу над новою версією нашого улюбленого фреймворка. Дізнайтеся, що нового у другій предвыпускной версії 5.2.0 RC2.
NGINX Unit Beta — вийшла бета-версія сервера додатків Nginx з підтримкою Ruby.
Ruby Gems
Interesting Methods — цей новий гем дозволяє швидко переглянути методи об'єктів в Ruby.
Deferral — гем дозволяє використовувати в Rails-додатках метод defer за зразком Golang.
Pwned — Pwned дозволяє використовувати Pwned Passwords API для Rails.
Послухати
241: Upgrading Kickstarter to Rails 5 with Logan McDonald — провідні подкасту обговорюють оновлення програми Kickstarter з Rails 4 на Rails 5.
The Bike Shed
- 147: Is a Lambda a Sandwich? — ведучі обговорюють новинки в Ruby 2.5, в тому числі різницю між поняттями block, proc та lambda.
- 144: Fisher Price™ Tools — у цьому подкасті автори обговорюють порядок квітневої конференції RailsConf 2018, досвід використання Rails Твіттером і багато іншого.
Ruby Rogues
- RR 352: React on Rails and Webpacker with Justin Gordon and Rob Wise — ведучі обговорюють бібліотеку React on Rails, Webpacker (адаптація Webpack під Rails), а також багато інші цікаві теми.
- RR 354: Music, Musicians, and Programmers with Catherine Meyers — послухайте цікаву історію Кетрін, яка змінила кар'єру оперної співачки на кар'єру успішного Ruby-розробника.
- RR 353: Removing Business Logic from Rails Controllers with Aaron Sumner — ведучі обговорюють, як прибрати бізнес-логіку з Rails-контролерів, переваги і недоліки службових об'єктів і багато іншого.
- RR 355: Code Reviews with Jacob Stoebel — даний подкаст важливий кожному розробнику, так як ведучі обговорюють аналіз коду, діляться досвідом і дають корисні поради.
RWpod
- 09 випуск 06 сезону. Passenger 5.2.1, Flutter beta 1, Clowne, Pain Points of GraphQL, Reactive Search, Flatbush, Prompts та інше
- 11 випуск 06 сезону. Desktop Ruby GUI development, let's Encrypt support wildcard certificates, SmooshGate, IDEA та інше
- 10 випуск 06 сезону. Using Genetic Algorithms in Ruby, Standardizing lessons learned from AMP, AppBandit, Risk, Co?rdinator, Mutag та інше
- 12 випуск 06 сезону. Towards The Ruby 3?3 Performance Goal, Code editors for Mac, Webdash, ScrollBooster та інше
Greater Than Code
- 073: Driven By Need, Guided By Example with Dan North
- 072: Story Time with Kerri Miller
- 071: Brein Power with Rein Henrichs
- 070: Trusting The Universe with Kale Kaposhilin
Подивитися
Method Driven Development — автор описує Method Driven Development (MDD) — техніку, яку він використовує при роботі з гемом Geocoder.
Develop a Messenger Bot in Pure Ruby — Andy Barnov — Не пропустіть видеотуториал про те, як створити чатбота на Ruby за допомогою фреймворку Rubotnik.
CSV & XML Injections — YYCRuby Presentation — презентація Гевіна Міллера з митапа YYCRuby; дізнайтеся, як запобігти CSV і XML injections.
Нова добірка від GoRails , в якій ведучий розглядає можливості ActiveStorage в Rails 5.2, а також вчить створювати шаблони для Rails-додатків:
- Інструменти & Fixing a Bug in Rails 5.2 Active Storage
- How to Create an Active Storage Previewer
- Rails 5.2 ActiveStorage Introduction
- Rails Application Templates
Підбірка платних скрінкасти від Drifting Ruby у березні
- #123 Encrypted Credentials in Rails 5.2
- #124 SimpleMDE and ActiveStorage
- #125 Turbolinks 5
- #126 Turbolinks iOS Hybrid App
Березневі випуски платних скрінкасти від Ruby Tapas
- Episode #518: Humane with Exceptions Hiro Asari
- Episode #519 — Supporting Different Service Versions with OO — Emily Stolfo
- Episode #520: Bundler Tips and Tricks with Andre Arko
Події
Remote Ruby — 5 квітня пройде щомісячний онлайн-івент Remote Ruby. Ідеально для тих, хто хоче бути в курсі подій у світі Ruby, не виходячи з дому!
Rails Girls Rotterdam — 14 квітня в Роттердамі Rails Girls проведуть безкоштовний одноденний воркшоп.
Конференції
Ruby Meditation #21 — ще не пізно зареєструватися на Ruby Meditation, яка пройде Харкові 14 квітня. Вас чекають цікаві та корисні доповіді, живе спілкування і дружня атмосфера.
RailsConf — якщо у вас відкрита віза в США, не пропустіть RailsConf 2018, найбільшу Ruby-конференцію в світі, яка пройде 17-19 квітня в Піттсбурзі, штат Пенсільванія.
Isle of Ruby — з 13 по 15 квітня у Великобританії пройде Isle of Ruby — фестиваль, де розробники діляться досвідом і відпочивають всім Ruby-ком'юніті.
RubyConfBY 2018 — 21 квітня в Мінську пройде третя конференція RubyConfBY. Теми включають прискорення Ruby за допомогою JIT-компілятора і перспективи використання мови Ruby в машинному навчанні.
Щодо тем/матеріалів/івентів, які варто додати в наступний випуск дайджесту, пишіть в коментарях або на [email protected] . Дякуємо за допомогу в підготовці дайджесту команді RubyGarage.
? Попередній випуск: Ruby дайджест #15
Опубліковано: 06/04/18 @ 10:00
Розділ Безпека
Рекомендуємо:
DOU Books: 5 книжок про менеджмент від Сергія Хлівненка, Engineering Manager у Lucky Labs
Як я працюю: Петро Коренєв, iOS Team Lead в Sigma Software
Березень 2018 — финстрип, рухаємося до 100К з інфо-сайтів
PHP дайджест #12: Laravel is hiring, 7.24, 8.0 вже в роботі
Реальна історія про те, як в Uklon впроваджували машинне навчання