Разрушаем негативные мифы Ruby, Rails

Preview:

DESCRIPTION

 

Citation preview

Разрушаем негативные мифы про руби и рельсы

что изменилось с выходом новых версий

Равиль Байрамгалин

@brainopiabrainopia@evilmartians.com

Почему Rails?• Ruby• Культура кода• Сообщество• Не способствует изобретению велосипедов

Миф 1Ruby – это что-то новое с неразвитой

экосистемой

Количество библиотек

Количество проектов на гитхабе

Миф 2Rails – нестандартные вещи тяжело

интегрировать

Пример: подключаем MongoDBRails 3.x – указать название в файле зависимостей и все

Миф 3Минорные релизы ломают плагины

В Rails 3 есть официальный апи для разработчиков плагинов

Миф 4Rails – мало документации

Rails 3 – весь код снабжен подробными комментамиapidock.com/rails – API доки с кармой и комментамиguides.rubyonrails.org – 28 официальных руководств, покрывающих все аспекты рельсrailscasts.com – 263 бесплатных скринкаста, каждую неделю новыйУже 10 книг для rails 3, в том числе и бесплатные доступные онлайн

Миф 5Ruby is slooooooooooooooooow

Ruby 1.9, JRubyВ среднем в 3.5 раза быстрее ruby 1.8, на отдельных

тестах на порядки быстрее.

Есть C-API, который позволяет просто реализовать узкие места на C

Для JRuby есть дополнительная возможность легко использовать java

Миф 6Rails is slooooooooooooow too

Предварительная оптимизация – зло Но бывают распространенные затычки, например, работа с базой данных и рендеринг темплейтов

Рендеринг темплейтов в Rails 3 до 10 раз быстрее

Затычка при работе с базойНа стороне руби:• Объединять запросы в одном (встроенный

механизм eager loading, в Rails 3 можно составить sql запрос любой сложности в рамках руби API)

• Identity Map в Rails 3.1

Миф 7Rails doesn’t scale

Вертикальное и горизонтальное масштабирование не зависят от

фреймворка или языка

Что обычно имеют в виду, то что треды в руби зеленые и мапятся на

один нативный тред =>

запуск нескольких процессов для использования нескольких ядер

Ruby 1.9Частично решил эту проблему – зеленые треды

мапятся на несколько нативных, есть GIL, но он не ставится для системных вызовов, для IO и C-

расширений, сообщающих ему об этом

JRuby, RubiniusНативные треды

Асинхронное программирование, как альтернатива тредам для приложений, у

которых затычка в IO

Супер простое асинхронное программирование в рельсах

Goliath

Помимо кучи других альтернатив:Eventmachine, Revactor, Cool.io, Em-Easy, Em-Synchrony

Время для Холивара

Recommended