Rails for dummies

Preview:

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 в действии).

Есть вопросы?