Rails Club 2014. Как все прошло

На этих выходных сходил с коллегами из SeoPult на ежегодную конференцию Rails Club. Встретил много друзей, с которыми работали вместе в других компаниях. Еще я выиграл приз.

prize

Хочу рассказать о своих впечатлениях о докладах и что я из них вынес.

Writing Fast Ruby. Эрик Майкл-Обер

 

eric

Хорошо, что этот доклад начался с небольшим опозданием: я как раз успел. Эрик рассказал про то, что часто интуиция подводит нас в определении того, какой код на ruby будет быстрее.

  • иногда быстрее yield, иногда block
  • не используйте gsub, если достаточно sub или tr
  • не стоит сроить логику на exception-ах, если можно обойтись if/else/case, потому как это медленно
  • если код тормозит, выкинте из него ActiveSupport
И главная рекомендация, которую Эрик дал в самом начале: используйте benchmark-ips:
require 'benchmark/ips'

Benchmark.ips do |x|
x.report("addition") { 1 + 2 }

x.report("addition2") do |times|
i = 0

 while i < times
   1 + 2
   i += 1
 end

end
end


В отличие от обычного benchmark-а он сам определяет количество итераций, которые нужно прогнать, чтобы сравнить 2 куска кода.

Работы с файлами в больших проектах. Кирилл Горин

kirill

Интересный рассказ про то, как это реально работает в Coub. Кирилл обрисовал проблемы, с которыми им пришлось столкнуться. Было интересно.

 

The Elements of Style in Ruby. Божидар Бацов

 

bojidar

Во время доклада складывалось ощущение, что Божидар приехал из негритянского квартала в Болгарии. Зачем-то несколько раз он выразился английским матерком. Видимо, Болгария совсем небольшая страна и похвастаться знанием болгарского английского там было не перед кем.

Что касается самого материала, то была предпринята интересная попытка взглянуть на проблему оформления программного кода с новой стороны.

Кроме этого докладчик анонсировал свою библиотеку Rubocop контроля за оформлением ruby-сода.

Хорошо подойдет для интеграции в CI системы.

Интеграция всех аспектов разработки в единый процесс. Александр Балашов

alex-inter

Если одним предложением: используйте CI-системы и pull-реквесты в вашем воркфлоу.

  • brakeman – система поиска уязвимостей в Rails-приложении
  • code climate – анализ качества кода, покрытие тестами
  • teatro.io – staging-сервер для каждого разработчика (использует docker)
Вообще, хорошая идея и у нас в компании настроить проект через docker, чтобы каждый разработчик имел одинакувую среду.

Круглый стол: бизнес логика в ROR приложении. Александр Даниленко

table

На доклад опоздал. Если в 2 словах, то: храните логику в правильном месте. Все зависит от ситуации. Кто бы сомневался :)

Посоветовали книги:

  • “Patterns in Enterprise Software” от Мартина Фаулера
  • Growing Rails Applications in Practice
  • Objects on Rails

The Future of Rack. Аарон Паттерсон

aaron2

Жизнерадостный, содержательный, оставляющий очень живое впечателение доклад и сам докладчик. Ruby-код, картинки животных и самоироничные реплики.

Аарон рассказал про то, как много объектов участвует даже в простых операциях с участием Rails и как он работает над этим. Еще рассказал про то, какие проблемы есть с запуском тестов с участием ActiveRecord в несколько процессов и какие пути решения есть. Собственно, проблемы возникают, если у вас используются fixtures… Не используйте их! :) Используйте FactoryGirl

aaron

 

Еще он рассказал про свое видение Rack и то, как это сейчас. Считает, что нужно разделить rack-модули на 3 типа, а не как сейчас – только один:

  • фильтр: добавляет before/after обработчик
  • “что-то там”: обрабатывает, но не “что-то там”, например сжатие GZIP
  • обычный rack, как сейчас
Свое видение отражается в новой библиотеке the_metal.

Big Data и Ruby. Равиль Байрамкалин

Map и Reduce.

Абстрактные машины во имя добра. Кирилл Тимофеев

meme

Можно показать котика и.. продолжить терять адутиторию. Кирилл это доказал. Показав целый зоопарк милых зверюшек, Кирилл не смог скрыть главного: сказать было нечего.

Было немного теории из лямбда-исчислений. Никакой новизны, никакой практической нагрузки, никакого ruby! Последнее было смертельно. Все с нетерпением ждали, когда доклад закончится. Вопрос был только 1: “Ты рассказал о том, чем мы пожертвовали, начав писать на ruby?”.

Concurent Systems in Ruby. Ждонас Никлас

jonas

Наглядно про виды конкурентного исполнения ruby-кода, что такое thread-safe и GIL. Автор порекомендовал обратить внимание на библиотеки:

  • Atomic – thread-safe объекты
  • Celluloid – Actor-based программирование
  • Hamster – набор классов по concurrent ruby
  • Concurent-ruby – еще один набор классов
Кроме этого порекомендовал книгу “Working with Ruby Threads”.

 

All The Little Things. Сенди Метц

 

sendi

Сенди не смогла приехать живьем и выступала через скайп. Она не вставляла котиков и шутки ради шуток, при этом доклад держал в напряжении аудиторию до самой развязки. Доклад был построен, как разбор одного случая из жизни программиста (самой Сенди), когда пришлось столкнуться с задачей исправления старого и запутанного метода.

Элегантный рефакторинг через тесты. Сразу захотелось что-то зарефакторить у себя в проекте.

Рекомендации:

Sorcery и паттерны в Ruby. Кирилл Шатров

auth

Попытка рассказать, где хранить бизнес-логику в rails-приложении. Но мы уже знаем, что хранить ее нужно в правильном месте (“right place”). А еще, для того, чтобы перестать быть ActiveRecord-программистом, нужно вместо 1 AR-класса создать еще несколько.

Докладчик порекомендовал библиотеку для “аутентификенции” sorcery и отговаривал от Devise.

Use Case Driven Architecture. Николай Рыжиков

Один из лучших докладов конференции. Простым языком, спокойно и содержательно. Надеюсь услышать докладчика с полноформатным выступлением в будущем.

Chewy - удобный Elastic Search. Аркадий Забажанов

Самый пострадавший от технических сбоев доклад. Презентация никак не заводилась.

Пользуйтесь для поиска Elasticsearch, потому что это быстро и хорошо. Для ruby используйте библиотекуChewy.

Заключение

all

Рекмендованные библиотеки, сервисы и инструменты:

  • benchmark-ips – измерение скорости
  • Rubocop – анализатор кода
  • brakeman – система поиска уязвимостей в Rails-приложении
  • code climate – анализ качества кода, покрытие тестами
  • teatro.io – staging-сервер для каждого разработчика (использует docker)
  • docker – деплой через виртуалки
  • FactoryGirl – вместо fixtures для тестов
  • the_metal – веббиблиотека для построения веб-сервера, новое видение rack
  • Atomic – thread-safe объекты
  • Celluloid – Actor-based программирование
  • Hamster – набор классов по concurrent ruby
  • Concurent-ruby – еще один набор классов
  • SandiMeter – статический анализатор ruby-кода в соответсвии с правилам Седи
  • sorcery – аутентификенция
  • Elasticsearch – быстрый поиск
  • Chewy – ruby-библиотека для Elasticsearch
Книги: