Upload
alexey-plutalov
View
383
Download
4
Embed Size (px)
DESCRIPTION
Citation preview
Ruby On RailsДля самых маленьких
On
Ruby and Ruby On RailsКратко о Ruby;
Кратко о Ruby On Rails;
Почему Ruby и почему Ruby On Rails?
Ответ на волнующий вопрос: откуда столько шума, и почему это круто?
Краткая история RubyРазработан японцем Юкихиро Мацумото;
Вышел в свет в 1995 году;
Что хотел создатель: Более мощный язык, чем Perl; Более ООП язык, чем Python.
Об итогах далее.
Матц следит за вами…
The Ruby WayПросто, но не слишком просто;
Принцип наименьшего удивления;
Вторичность скорости работы программы;
Динамичность;
Простые строгие правила, выполнение которых не доходит до педантизма;
Потребность создавать полезные и красивые программы, как причина программирования.
Почему Ruby – это круто?Высокая скорость разработки;
Практикуется TDD и BDD;
Практикуется применение паттернов и следования принципу DRY;
Мощные средства для написания DSL (Domain Specific Language);
Большое сообщество движимое чувством прекрасного, любовью к красивому коду и хорошему софту.
Поговорим о минусах…Высокий порог вхождения;
Много магии (которая становится вполне понятной при познании Дзена Ruby);
В России Ruby только набирает популярность (текущая популярность языка только самое начало – дальше больше);
Низкая скорость работы;
Высокое потребление памяти.
Развитие языкаВ феврале запланирован выход версии 2.0;
Канонической реализацией является MRI Ruby;
Существующие реализации: Rubynius (LLVM-интерпретатор написанный на Ruby;
родственный проект PyPy); Elixir (диалект Ruby для Erlang VM); JRuby (Java powered Ruby); IronRuby (.NET powered Ruby); MagLev; MacRuby.
Краткая история Ruby On RailsСоздан Давидом Хейнемейером Ханссоном из 37signals
(извлечен из кода Basecamp);
23 декабря 2008 года – объединение с Merb;
25 мая 2010 – выход версии 2.3.8;
29 августа 2010 года – выход версии 3.0;
31 августа 2011 года – выход версии 3.1;
20 января 2012 года – выход версии 3.2.
“Я знаю как сделать ХОРОШО!”
The Rails WayDon’t Repeat Yourself;
Convention over Configuration;
Предположение о том, что есть лучший способ что-то сделать (в некоторых случаях препятствует альтернативам);
Требует понимания The Rails Way, и карает тех, кто тащит старые привычки в Ruby On Rails;
Используется ряд допущений о том, что нужно каждому разработчику для создания нового проекта.
Ruby On Rails и друзьяRuby On Rails не один:
Sinatra; Padrino; Espresso.
Повлиял на: Pylons (Python); Play! Framework (Java); Grails (Groovy/Java); Yii (PHP).
From WSGI to RackPython Web Server Gateway Protocol (WSGI);
Ruby Rack;
Request/Response modelRails следуют лишь одной модели;
Последовательность обработки запроса: Браузер; Прокси-сервер (например, nginx); Веб-вервер (например, Unicorn); Rack; Middlewares; Router; Controller; Action.
Архитектура Rails Rails – клей + компоненты;
Railtie;
ActiveSupport;
ActiveRecord;
ActiveModel;
ActionMailer;
ActionPack: ActionController; ActionDispatch; ActionView.
RailtieУправление загрузкой Rails приложения;
Управление интерфейсом командной строки;
Предоставление интерфейса генераторов.
ActiveSupportРасширение языка;
Расширение стандартной библиотеки;
Дополнительные утилиты.
ActiveRecordПрослойка между приложением и базой данных;
Запросы строятся с помощью AREL движка;
Независимость от базы данных;
Альтернативы: DataMapper; Sequel; Mongoid; MongoMapper; CouchPotato и др.
ActiveModel Прослойка между ActionPack и данными;
Аттрибуты;
Обратные вызовы;
Слежение за изменениями;
Управление ошибками;
Интроспекция;
Observer;
Сериализация;
Валидации;
Кастомные валидации.
ActionControllerПрослойка между представлением и данными;
Обратные вызовы.
ActionViewПоиск шаблонов;
Взаимодействие с движками шаблонов;
Предоставление хелперов.
ActionDispatchПарсинг информации о запросе;
Управление HTTP кэшированием;
Cookies и сессии;
Роутинг внутри приложения.
Также в комплектеAssets Pipelines;
Background Jobs (in Rails 4);
Консольные утилиты;
Генераторы.
Если чего-то не хватает?Огромное количество плагинов;
Возможность написать свое решение один раз, и использовать его везде;
Практически для любой задачи уже есть готовое решение;
Если готовое решение не подходит – можно изменить или написать свое (open source в действии).
Есть вопросы?