SlideShare una empresa de Scribd logo
1 de 22
Migrate!


@SergeyMoiseev
Moiseev.Sergey@gmail.com
О проекте
•   http://knigafund.ru

•   Электронная
    библиотека

•   38 тысяч книг на
    текущий момент

•   RoR 2.3, Postgres, Nginx
    +Mongrel
Проект в начале 2008

• Разработка силами аутсорсеров в
  течении года.
• Назначенный релиз в сентябре.
• Код на Symfony.
Хронология 2008
•   Май - формирование команды.
•   Июнь/июль - отказ от услуг аутсорсеров.
•   Июль/август - доводка проекта своими
    силами.
•   Июнь-сентябрь - разработка DRM/Backoffice
    на основе Rails 2.1
•   Октябрь - полноценное открытие, принятие
    решения о разработке новой версии на Rails.
Why bother?
• Symfony - php framework. Слабо
  документирован, вторичен, тащит за
  собой все проблемы с php.
• Аутсорсеры на проекте меняли команду
  несколько раз.
• // FIXME: 06.12.07 обработать ошибку и
  выдать нормально результат.
Начало работ по
         миграции
•   Находим ведущего программиста владеющего
    технологией. В данном случае rails-ninja как ему
    кажется.
•   Долго спорим с ним по поводу best practices (до
    появления http://github.com/flyerhzm/
    rails_best_practices еще год).
•   В процессе подготовки работ по миграции
    увольняем прошлого “специалиста”.
•   Учим команду. Основной вид работ - копирование
    работающего поведения.
Процесс
•   Миграция заняла 3,5-4 месяца (в наших широтах
    слишком много праздников в начале года).
•   Работающий прототип был готов на втором
    месяце.
•   Перенос данных чуть ли не самая сложная
    работа.
•   Беспокойный код (if !true vs. unless true) -
    основная проблема программистов
    переходящих с php.
Плюсы миграции

• Разработка по прототипу.
• Возможность сделать по-уму.
• Возможность плавно переобучить
  команду.
Минусы миграции

• Две версии требуют одновременной
  поддержки.
• Данные требуют миграции.
• Архитектурные ошибки наследуются
  (например маршрутизация).
Why now?
• http://www.webkomora.com.ua/ru/articles/
  web/management/man-month/11.html
  Брукс все так же актуален. Допущения
  устаревают, ошибки копятся.
• Никто не хочет быть “специалистом по
  большим машинам”.
• Rails 3 (смотри дальше).
PHP

• противоречивый дизайн
• низкий порог вхождения
• возьмем любой фреймворк для примера
• недостаточно объектный
Perl
• Ларри Уолл дважды побеждал в
  международном конкурсе запутанного
  кода на языке программирования Си.
  http://www.perlfoundation.org/perl6/
  index.cgi?larry_wall
• Негативно настроенное сообщество.
• Perl 6.
Python


• Строгая отбивка.
• http://c2.com/cgi/wiki?PythonVsRuby
Ruby

• полностью объектен.
• обладает хорошим инструментарием
  мета-программирования.
• большое позитивно настроенное
  сообщество.
Why Rails?
• Ruby.
• Community.
• Большинство других фреймворков
  находятся в положении догоняющих.
• Make easy things trivial, make hard things
  easy, make impossible things possible!
Rails 3

• Новый маршрутизатор.
• Новый синтаксис ActiveRecord.
• Bundler.
• Компонентная модель фреймворка.
• Unobtrusive javascript.
Куда смотреть

• http://ruby-toolbox.com/
• http://ruby-toolbox.com/ в особенности
  на http://tryruby.org/
• http://rubyonrails.org/
• http://www.railsdispatch.com/
Бонус-трек


• Не только для веба - производственная
  линия.
• Не только для базы - демо-сайт.
Производственная
         линия
•   Rails приложение генерации контента для сайта.
•   Построено вокруг главной сущности - книга. С
    использованием ActsAsStateMachine (aasm) gem.
•   Обработка поделена на задачи посредством rake tasks
    наследующих окружение (модельный слой).
•   Часть задач выполняется на виртуальных windows машинах,
    часть на центральном сервере обработки.
•   База едина и за счет конечного автомата aasm сохраняет
    целостность.
•   Веб-интерфейс используется на центральном сервере
    обработки для статистики и управления линией.
Демо-сайт
• Приложение для демострации режима
  чтения книги - http://demo.knigafund.ru
• config.frameworks -=
  [ :active_record, :active_resource,
  :action_mailer ] в config/environment.rb
• Modelless MVC приложение, вся логика
  находится в пределах контроллеров.
Заключение

• NoSQL? Or NoMySql?
• http://mitpress.mit.edu/sicp/
• Просто изучайте и внедряйте что-либо
  новое.
Вопросы?

Más contenido relacionado

La actualidad más candente

Платформа .NET Core глазами PHP-разработчика
Платформа .NET Core глазами PHP-разработчикаПлатформа .NET Core глазами PHP-разработчика
Платформа .NET Core глазами PHP-разработчикаГеоргий Драк
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковAlex Tumanoff
 
Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Oleg Poludnenko
 
Real-time данные на фронтенде
Real-time данные на фронтендеReal-time данные на фронтенде
Real-time данные на фронтендеEXANTE
 
JavaScript завтра
JavaScript завтраJavaScript завтра
JavaScript завтраSergey Rubanov
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинSergey Xek
 
В топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеВ топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеCOMAQA.BY
 
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
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Pavel Dovbush
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON
 
Егор Гришечко «Async/Await и всё, что вы боялись спросить»
Егор Гришечко «Async/Await и всё, что вы боялись спросить»Егор Гришечко «Async/Await и всё, что вы боялись спросить»
Егор Гришечко «Async/Await и всё, что вы боялись спросить»SpbDotNet Community
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON
 
Что такое современная Frontend разработка
Что такое современная Frontend разработкаЧто такое современная Frontend разработка
Что такое современная Frontend разработкаDevOWL Meetup
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Ontico
 
Если не Drupal 8, то что? Обзор Laravel 5
Если не Drupal 8, то что? Обзор Laravel 5Если не Drupal 8, то что? Обзор Laravel 5
Если не Drupal 8, то что? Обзор Laravel 5DrupalSPB
 
Интернационализация и локализация Rails. gem russian
Интернационализация и локализация Rails. gem russianИнтернационализация и локализация Rails. gem russian
Интернационализация и локализация Rails. gem russianYaroslav Markin
 
«Нужно больше шин! Eventbus based framework vertx.io»
«Нужно больше шин! Eventbus based framework vertx.io»«Нужно больше шин! Eventbus based framework vertx.io»
«Нужно больше шин! Eventbus based framework vertx.io»Olga Lavrentieva
 
Vert.x eventbus-based framework
Vert.x eventbus-based frameworkVert.x eventbus-based framework
Vert.x eventbus-based frameworkMikhail Bortnyk
 

La actualidad más candente (20)

Платформа .NET Core глазами PHP-разработчика
Платформа .NET Core глазами PHP-разработчикаПлатформа .NET Core глазами PHP-разработчика
Платформа .NET Core глазами PHP-разработчика
 
Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
 
Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥Макс Волошин: Php + shell = ♥
Макс Волошин: Php + shell = ♥
 
Real-time данные на фронтенде
Real-time данные на фронтендеReal-time данные на фронтенде
Real-time данные на фронтенде
 
JavaScript завтра
JavaScript завтраJavaScript завтра
JavaScript завтра
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
 
В топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стекеВ топку Postman - пишем API автотесты в привычном стеке
В топку Postman - пишем API автотесты в привычном стеке
 
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.
 
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
Эволюция клиентской разработки: от веба ко "всеобщей мобилизации” или mobile-...
 
SECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодняSECON'2016. Васильков Василий, Серверное программирование сегодня
SECON'2016. Васильков Василий, Серверное программирование сегодня
 
Егор Гришечко «Async/Await и всё, что вы боялись спросить»
Егор Гришечко «Async/Await и всё, что вы боялись спросить»Егор Гришечко «Async/Await и всё, что вы боялись спросить»
Егор Гришечко «Async/Await и всё, что вы боялись спросить»
 
Operden1
Operden1Operden1
Operden1
 
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
SECON'2016. Тюменцев Евгений, Разработка надежных параллельных, распределенны...
 
Что такое современная Frontend разработка
Что такое современная Frontend разработкаЧто такое современная Frontend разработка
Что такое современная Frontend разработка
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
 
JPHP
JPHPJPHP
JPHP
 
Если не Drupal 8, то что? Обзор Laravel 5
Если не Drupal 8, то что? Обзор Laravel 5Если не Drupal 8, то что? Обзор Laravel 5
Если не Drupal 8, то что? Обзор Laravel 5
 
Интернационализация и локализация Rails. gem russian
Интернационализация и локализация Rails. gem russianИнтернационализация и локализация Rails. gem russian
Интернационализация и локализация Rails. gem russian
 
«Нужно больше шин! Eventbus based framework vertx.io»
«Нужно больше шин! Eventbus based framework vertx.io»«Нужно больше шин! Eventbus based framework vertx.io»
«Нужно больше шин! Eventbus based framework vertx.io»
 
Vert.x eventbus-based framework
Vert.x eventbus-based frameworkVert.x eventbus-based framework
Vert.x eventbus-based framework
 

Destacado

老神將
老神將老神將
老神將l331s
 
C:\fakepath\mime presentation 2313
C:\fakepath\mime presentation 2313C:\fakepath\mime presentation 2313
C:\fakepath\mime presentation 2313guestfdd7b8
 
Parts of the body
Parts of the bodyParts of the body
Parts of the bodyJavieritta
 
Unit 2 Performance - Mime presentation
Unit 2 Performance - Mime presentationUnit 2 Performance - Mime presentation
Unit 2 Performance - Mime presentationguestfdd7b8
 

Destacado (7)

老神將
老神將老神將
老神將
 
C:\fakepath\mime presentation 2313
C:\fakepath\mime presentation 2313C:\fakepath\mime presentation 2313
C:\fakepath\mime presentation 2313
 
Parts of the body
Parts of the bodyParts of the body
Parts of the body
 
Going to extreme
Going to extremeGoing to extreme
Going to extreme
 
Kathryn moffat
Kathryn moffatKathryn moffat
Kathryn moffat
 
Unit 2 Performance - Mime presentation
Unit 2 Performance - Mime presentationUnit 2 Performance - Mime presentation
Unit 2 Performance - Mime presentation
 
Worried code
Worried codeWorried code
Worried code
 

Similar a Migrate!

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyAlex Chistyakov
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и DjangoTaras Lyapun
 
Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)rit2010
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на RailsАндрей Колешко
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаUP2IT
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013Roman Pavlushko
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaAlex Chistyakov
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеit-people
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...it-people
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustMichael Pankov
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Andrew Mayorov
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюринpgdayrussia
 
Устройство современного распределенного Object Storage на примере LeoFS, Алек...
Устройство современного распределенного Object Storage на примере LeoFS, Алек...Устройство современного распределенного Object Storage на примере LeoFS, Алек...
Устройство современного распределенного Object Storage на примере LeoFS, Алек...Ontico
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014Alex Chistyakov
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)Pavel Tsukanov
 

Similar a Migrate! (20)

Опыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на RubyОпыт эксплуатации большого проекта на Ruby
Опыт эксплуатации большого проекта на Ruby
 
Sivko
SivkoSivko
Sivko
 
Ryazan
RyazanRyazan
Ryazan
 
Введение в Python и Django
Введение в Python и DjangoВведение в Python и Django
Введение в Python и Django
 
Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)
 
Корпоративное приложение на Rails
Корпоративное приложение на RailsКорпоративное приложение на Rails
Корпоративное приложение на Rails
 
Go для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчикаGo для веба глазами PHP-разработчика
Go для веба глазами PHP-разработчика
 
Errors Tracker
Errors TrackerErrors Tracker
Errors Tracker
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
 
Практика разработки веб-серверов на Rust
Практика разработки веб-серверов на RustПрактика разработки веб-серверов на Rust
Практика разработки веб-серверов на Rust
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
 
Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails Первые страницы на Ruby on Rails
Первые страницы на Ruby on Rails
 
Mobile web apps
Mobile web appsMobile web apps
Mobile web apps
 
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил ТюринPG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
PG Day'14 Russia, PostgreSQL в avito.ru, Михаил Тюрин
 
Устройство современного распределенного Object Storage на примере LeoFS, Алек...
Устройство современного распределенного Object Storage на примере LeoFS, Алек...Устройство современного распределенного Object Storage на примере LeoFS, Алек...
Устройство современного распределенного Object Storage на примере LeoFS, Алек...
 
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
 
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
ORM технологии в .NET (Nhibernate, Linq To SQL, Entity Framework)
 

Migrate!

  • 2. О проекте • http://knigafund.ru • Электронная библиотека • 38 тысяч книг на текущий момент • RoR 2.3, Postgres, Nginx +Mongrel
  • 3. Проект в начале 2008 • Разработка силами аутсорсеров в течении года. • Назначенный релиз в сентябре. • Код на Symfony.
  • 4. Хронология 2008 • Май - формирование команды. • Июнь/июль - отказ от услуг аутсорсеров. • Июль/август - доводка проекта своими силами. • Июнь-сентябрь - разработка DRM/Backoffice на основе Rails 2.1 • Октябрь - полноценное открытие, принятие решения о разработке новой версии на Rails.
  • 5. Why bother? • Symfony - php framework. Слабо документирован, вторичен, тащит за собой все проблемы с php. • Аутсорсеры на проекте меняли команду несколько раз. • // FIXME: 06.12.07 обработать ошибку и выдать нормально результат.
  • 6. Начало работ по миграции • Находим ведущего программиста владеющего технологией. В данном случае rails-ninja как ему кажется. • Долго спорим с ним по поводу best practices (до появления http://github.com/flyerhzm/ rails_best_practices еще год). • В процессе подготовки работ по миграции увольняем прошлого “специалиста”. • Учим команду. Основной вид работ - копирование работающего поведения.
  • 7. Процесс • Миграция заняла 3,5-4 месяца (в наших широтах слишком много праздников в начале года). • Работающий прототип был готов на втором месяце. • Перенос данных чуть ли не самая сложная работа. • Беспокойный код (if !true vs. unless true) - основная проблема программистов переходящих с php.
  • 8. Плюсы миграции • Разработка по прототипу. • Возможность сделать по-уму. • Возможность плавно переобучить команду.
  • 9. Минусы миграции • Две версии требуют одновременной поддержки. • Данные требуют миграции. • Архитектурные ошибки наследуются (например маршрутизация).
  • 10. Why now? • http://www.webkomora.com.ua/ru/articles/ web/management/man-month/11.html Брукс все так же актуален. Допущения устаревают, ошибки копятся. • Никто не хочет быть “специалистом по большим машинам”. • Rails 3 (смотри дальше).
  • 11. PHP • противоречивый дизайн • низкий порог вхождения • возьмем любой фреймворк для примера • недостаточно объектный
  • 12. Perl • Ларри Уолл дважды побеждал в международном конкурсе запутанного кода на языке программирования Си. http://www.perlfoundation.org/perl6/ index.cgi?larry_wall • Негативно настроенное сообщество. • Perl 6.
  • 13. Python • Строгая отбивка. • http://c2.com/cgi/wiki?PythonVsRuby
  • 14. Ruby • полностью объектен. • обладает хорошим инструментарием мета-программирования. • большое позитивно настроенное сообщество.
  • 15. Why Rails? • Ruby. • Community. • Большинство других фреймворков находятся в положении догоняющих. • Make easy things trivial, make hard things easy, make impossible things possible!
  • 16. Rails 3 • Новый маршрутизатор. • Новый синтаксис ActiveRecord. • Bundler. • Компонентная модель фреймворка. • Unobtrusive javascript.
  • 17. Куда смотреть • http://ruby-toolbox.com/ • http://ruby-toolbox.com/ в особенности на http://tryruby.org/ • http://rubyonrails.org/ • http://www.railsdispatch.com/
  • 18. Бонус-трек • Не только для веба - производственная линия. • Не только для базы - демо-сайт.
  • 19. Производственная линия • Rails приложение генерации контента для сайта. • Построено вокруг главной сущности - книга. С использованием ActsAsStateMachine (aasm) gem. • Обработка поделена на задачи посредством rake tasks наследующих окружение (модельный слой). • Часть задач выполняется на виртуальных windows машинах, часть на центральном сервере обработки. • База едина и за счет конечного автомата aasm сохраняет целостность. • Веб-интерфейс используется на центральном сервере обработки для статистики и управления линией.
  • 20. Демо-сайт • Приложение для демострации режима чтения книги - http://demo.knigafund.ru • config.frameworks -= [ :active_record, :active_resource, :action_mailer ] в config/environment.rb • Modelless MVC приложение, вся логика находится в пределах контроллеров.
  • 21. Заключение • NoSQL? Or NoMySql? • http://mitpress.mit.edu/sicp/ • Просто изучайте и внедряйте что-либо новое.

Notas del editor