SlideShare ist ein Scribd-Unternehmen logo
1 von 23
On




Ruby On Rails
Для самых маленьких
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 Way
 Don’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 Rack
 Python Web Server Gateway Protocol (WSGI);

 Ruby Rack;
Request/Response model
 Rails следуют лишь одной модели;

 Последовательность обработки запроса:
  Браузер;
  Прокси-сервер (например, 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 в действии).
Есть вопросы?

Weitere ähnliche Inhalte

Was ist angesagt?

My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017Alex Chistyakov
 
неприятная правда про язык go
неприятная правда про язык goнеприятная правда про язык go
неприятная правда про язык goDaniel Podolsky
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016Alex Chistyakov
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?HappyDev-lite
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию7bits
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)Bakyt Niyazov
 
ToroDB (highload++2015)
ToroDB (highload++2015)ToroDB (highload++2015)
ToroDB (highload++2015)Pavel Alexeev
 
Erlang мгновенное просветление
Erlang  мгновенное просветлениеErlang  мгновенное просветление
Erlang мгновенное просветлениеMaxim Sokhatsky
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsDaniel Podolsky
 
High load. Наследство от дядюшки Ау
High load. Наследство от дядюшки АуHigh load. Наследство от дядюшки Ау
High load. Наследство от дядюшки АуIgor Malinovskiy
 
1. ruby великолепный. вступление история и философия
1. ruby великолепный. вступление   история и философия1. ruby великолепный. вступление   история и философия
1. ruby великолепный. вступление история и философияАлександр Вагин
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?Daniel Podolsky
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplantit-people
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
Python и высокая нагрузка
Python и высокая нагрузкаPython и высокая нагрузка
Python и высокая нагрузкаAlexander Shigin
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRailsPavel Gabriel
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlDaniel Podolsky
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует GoArtem Kovardin
 

Was ist angesagt? (19)

My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
 
неприятная правда про язык go
неприятная правда про язык goнеприятная правда про язык go
неприятная правда про язык go
 
My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016My talk at YouCon Saratov 2016
My talk at YouCon Saratov 2016
 
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
14 HappyDev-lite-2015 autumn. Дмитрий Вахрушев. Зачем вам изучать Python?
 
Курс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологиюКурс Java-2016. Занятие 01. Введение в Java как технологию
Курс Java-2016. Занятие 01. Введение в Java как технологию
 
Server Side Javascript (ru)
Server Side Javascript (ru)Server Side Javascript (ru)
Server Side Javascript (ru)
 
ToroDB (highload++2015)
ToroDB (highload++2015)ToroDB (highload++2015)
ToroDB (highload++2015)
 
Erlang мгновенное просветление
Erlang  мгновенное просветлениеErlang  мгновенное просветление
Erlang мгновенное просветление
 
RTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwordsRTB DSP на языке Go: укрощение buzzwords
RTB DSP на языке Go: укрощение buzzwords
 
High load. Наследство от дядюшки Ау
High load. Наследство от дядюшки АуHigh load. Наследство от дядюшки Ау
High load. Наследство от дядюшки Ау
 
1. ruby великолепный. вступление история и философия
1. ruby великолепный. вступление   история и философия1. ruby великолепный. вступление   история и философия
1. ruby великолепный. вступление история и философия
 
NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?NoSQL — неспроста ли это "ЖЖЖ"?
NoSQL — неспроста ли это "ЖЖЖ"?
 
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
"Портирование Web SDK с JS на TS" Петров Григорий, Voximplant
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
Operden1
Operden1Operden1
Operden1
 
Python и высокая нагрузка
Python и высокая нагрузкаPython и высокая нагрузка
Python и высокая нагрузка
 
10 reasons I love RubyOnRails
10 reasons I love RubyOnRails10 reasons I love RubyOnRails
10 reasons I love RubyOnRails
 
Tk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosqlTk conf daniel-podolsky-sqlvsnosql
Tk conf daniel-podolsky-sqlvsnosql
 
Как ВКонтакте использует Go
Как ВКонтакте использует GoКак ВКонтакте использует Go
Как ВКонтакте использует Go
 

Andere mochten auch

Refactorings with RubyMine
Refactorings with RubyMineRefactorings with RubyMine
Refactorings with RubyMineavokin
 
Django: инструкция по применению
Django: инструкция по применениюDjango: инструкция по применению
Django: инструкция по применениюIvan Kolodyazhny
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения7bits
 
I18n ruby-приложений
I18n ruby-приложенийI18n ruby-приложений
I18n ruby-приложенийAndrey Sitnik
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)guest40e031
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsYaroslav Markin
 
Фронтенд для рубиста
Фронтенд для рубистаФронтенд для рубиста
Фронтенд для рубистаKir Shatrov
 
Debbug Rails Application For Dummies
Debbug Rails Application For DummiesDebbug Rails Application For Dummies
Debbug Rails Application For DummiesAndrey Subbota
 
Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"railsclub
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Vitalii Tytskyi
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Andrey Listochkin
 
Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016zykin-ilya
 

Andere mochten auch (20)

Refactorings with RubyMine
Refactorings with RubyMineRefactorings with RubyMine
Refactorings with RubyMine
 
Django: инструкция по применению
Django: инструкция по применениюDjango: инструкция по применению
Django: инструкция по применению
 
Cпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложенияCпецкурс 2014, занятие 7. Web-приложения
Cпецкурс 2014, занятие 7. Web-приложения
 
I18n ruby-приложений
I18n ruby-приложенийI18n ruby-приложений
I18n ruby-приложений
 
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The BeastAlexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
Alexander Dymo - IT Jam 2009 - Ruby: Beaty Or The Beast
 
развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)развертывание среды Rails (антон веснин, Locum Ru)
развертывание среды Rails (антон веснин, Locum Ru)
 
RSpec. Part 3
RSpec. Part 3RSpec. Part 3
RSpec. Part 3
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on Rails
 
RSpec. Part 1
RSpec. Part 1RSpec. Part 1
RSpec. Part 1
 
Rails Concerns
Rails ConcernsRails Concerns
Rails Concerns
 
Ruby on Rails for noobs
Ruby on Rails for noobsRuby on Rails for noobs
Ruby on Rails for noobs
 
R18n
R18nR18n
R18n
 
Фронтенд для рубиста
Фронтенд для рубистаФронтенд для рубиста
Фронтенд для рубиста
 
Debbug Rails Application For Dummies
Debbug Rails Application For DummiesDebbug Rails Application For Dummies
Debbug Rails Application For Dummies
 
Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"Александр Тищенко - "Антикризисная презентация"
Александр Тищенко - "Антикризисная презентация"
 
Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.Призма24 - Маркетплейсы.
Призма24 - Маркетплейсы.
 
Assets Pipeline
Assets PipelineAssets Pipeline
Assets Pipeline
 
RSpec. Part 2
RSpec. Part 2RSpec. Part 2
RSpec. Part 2
 
Когда технологий много - iForum 2013
Когда технологий много - iForum 2013Когда технологий много - iForum 2013
Когда технологий много - iForum 2013
 
Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016Deploy.rb, Ilya Zykin, Rails club2016
Deploy.rb, Ilya Zykin, Rails club2016
 

Ähnlich wie Rails for dummies

13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.HappyDev-lite
 
Разрушаем негативные мифы Ruby, Rails.
Разрушаем негативные мифы Ruby, Rails.Разрушаем негативные мифы Ruby, Rails.
Разрушаем негативные мифы Ruby, Rails.Ravil Bayramgalin
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"railsclub
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Fwdays
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScriptOleg Podsechin
 
“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”
“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”
Olga Lavrentieva
 
Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Timur Shemsedinov
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsАлександр Ежов
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendenciesDarkestMaster
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Minsk Linux User Group
 
Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.Yury Bushmelev
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Ontico
 
Api Bunin Oleg
Api Bunin OlegApi Bunin Oleg
Api Bunin OlegAlex Ilyin
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Constantin Kichinsky
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 

Ähnlich wie Rails for dummies (20)

Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails
 
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
13 HappyDev-lite-2015 autumn. Руслан Шарипов. Ruby, making programmers happy.
 
Migrate!
Migrate!Migrate!
Migrate!
 
Разрушаем негативные мифы Ruby, Rails.
Разрушаем негативные мифы Ruby, Rails.Разрушаем негативные мифы Ruby, Rails.
Разрушаем негативные мифы Ruby, Rails.
 
Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"Макс Лапшин - "EventMachine и evented архитектура"
Макс Лапшин - "EventMachine и evented архитектура"
 
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
 
Current State of Server Side JavaScript
Current State of Server Side JavaScriptCurrent State of Server Side JavaScript
Current State of Server Side JavaScript
 
Erlang ruby
Erlang rubyErlang ruby
Erlang ruby
 
“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”
“Чем хорош Erlang вообще и для веб-разработки в частности?”

“Чем хорош Erlang вообще и для веб-разработки в частности?”

 
Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021Node.js Меньше сложности, больше надежности Holy.js 2021
Node.js Меньше сложности, больше надежности Holy.js 2021
 
Как сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on RailsКак сделать контрибут в Ruby on Rails
Как сделать контрибут в Ruby on Rails
 
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
CodeFest 2012. Сидельников А. — Опыт создания DSL на Ruby. Где применить, как...
 
Web programming modern tendencies
Web programming modern tendenciesWeb programming modern tendencies
Web programming modern tendencies
 
Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?Алексей Туля - А нужен ли вам erlang?
Алексей Туля - А нужен ли вам erlang?
 
Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.Карта граблей на поле сбора и доставки логов. Lazada-way.
Карта граблей на поле сбора и доставки логов. Lazada-way.
 
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
Опыт работы с LuaJIT в нагруженных интернет-проектах / Александр Гладыш (Logi...
 
Api Bunin Oleg
Api Bunin OlegApi Bunin Oleg
Api Bunin Oleg
 
Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!Ruby On Rails: Web-разработка по-другому!
Ruby On Rails: Web-разработка по-другому!
 
Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
0. hello java world
0. hello java world0. hello java world
0. hello java world
 

Rails for dummies

  • 1. On Ruby On Rails Для самых маленьких
  • 2. Ruby and Ruby On Rails  Кратко о Ruby;  Кратко о Ruby On Rails;  Почему Ruby и почему Ruby On Rails?  Ответ на волнующий вопрос: откуда столько шума, и почему это круто?
  • 3. Краткая история Ruby  Разработан японцем Юкихиро Мацумото;  Вышел в свет в 1995 году;  Что хотел создатель:  Более мощный язык, чем Perl;  Более ООП язык, чем Python.  Об итогах далее. Матц следит за вами…
  • 4. The Ruby Way  Просто, но не слишком просто;  Принцип наименьшего удивления;  Вторичность скорости работы программы;  Динамичность;  Простые строгие правила, выполнение которых не доходит до педантизма;  Потребность создавать полезные и красивые программы, как причина программирования.
  • 5. Почему Ruby – это круто?  Высокая скорость разработки;  Практикуется TDD и BDD;  Практикуется применение паттернов и следования принципу DRY;  Мощные средства для написания DSL (Domain Specific Language);  Большое сообщество движимое чувством прекрасного, любовью к красивому коду и хорошему софту.
  • 6. Поговорим о минусах…  Высокий порог вхождения;  Много магии (которая становится вполне понятной при познании Дзена Ruby);  В России Ruby только набирает популярность (текущая популярность языка только самое начало – дальше больше);  Низкая скорость работы;  Высокое потребление памяти.
  • 7. Развитие языка  В феврале запланирован выход версии 2.0;  Канонической реализацией является MRI Ruby;  Существующие реализации:  Rubynius (LLVM-интерпретатор написанный на Ruby; родственный проект PyPy);  Elixir (диалект Ruby для Erlang VM);  JRuby (Java powered Ruby);  IronRuby (.NET powered Ruby);  MagLev;  MacRuby.
  • 8. Краткая история 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. “Я знаю как сделать ХОРОШО!”
  • 9. The Rails Way  Don’t Repeat Yourself;  Convention over Configuration;  Предположение о том, что есть лучший способ что-то сделать (в некоторых случаях препятствует альтернативам);  Требует понимания The Rails Way, и карает тех, кто тащит старые привычки в Ruby On Rails;  Используется ряд допущений о том, что нужно каждому разработчику для создания нового проекта.
  • 10. Ruby On Rails и друзья  Ruby On Rails не один:  Sinatra;  Padrino;  Espresso.  Повлиял на:  Pylons (Python);  Play! Framework (Java);  Grails (Groovy/Java);  Yii (PHP).
  • 11. From WSGI to Rack  Python Web Server Gateway Protocol (WSGI);  Ruby Rack;
  • 12. Request/Response model  Rails следуют лишь одной модели;  Последовательность обработки запроса:  Браузер;  Прокси-сервер (например, nginx);  Веб-вервер (например, Unicorn);  Rack;  Middlewares;  Router;  Controller;  Action.
  • 13. Архитектура Rails  Rails – клей + компоненты;  Railtie;  ActiveSupport;  ActiveRecord;  ActiveModel;  ActionMailer;  ActionPack:  ActionController;  ActionDispatch;  ActionView.
  • 14. Railtie  Управление загрузкой Rails приложения;  Управление интерфейсом командной строки;  Предоставление интерфейса генераторов.
  • 15. ActiveSupport  Расширение языка;  Расширение стандартной библиотеки;  Дополнительные утилиты.
  • 16. ActiveRecord  Прослойка между приложением и базой данных;  Запросы строятся с помощью AREL движка;  Независимость от базы данных;  Альтернативы:  DataMapper;  Sequel;  Mongoid;  MongoMapper;  CouchPotato и др.
  • 17. ActiveModel  Прослойка между ActionPack и данными;  Аттрибуты;  Обратные вызовы;  Слежение за изменениями;  Управление ошибками;  Интроспекция;  Observer;  Сериализация;  Валидации;  Кастомные валидации.
  • 18. ActionController  Прослойка между представлением и данными;  Обратные вызовы.
  • 19. ActionView  Поиск шаблонов;  Взаимодействие с движками шаблонов;  Предоставление хелперов.
  • 20. ActionDispatch  Парсинг информации о запросе;  Управление HTTP кэшированием;  Cookies и сессии;  Роутинг внутри приложения.
  • 21. Также в комплекте  Assets Pipelines;  Background Jobs (in Rails 4);  Консольные утилиты;  Генераторы.
  • 22. Если чего-то не хватает?  Огромное количество плагинов;  Возможность написать свое решение один раз, и использовать его везде;  Практически для любой задачи уже есть готовое решение;  Если готовое решение не подходит – можно изменить или написать свое (open source в действии).