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

Какой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис ЦыплаковКакой фреймворк нам нужен для Web? Денис Цыплаков
Какой фреймворк нам нужен для Web? Денис Цыплаков
Alex Tumanoff
 
Javascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только одинJavascript-фреймворки:
 должен остаться только один
Javascript-фреймворки:
 должен остаться только один
Sergey Xek
 
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Цикл разработки и внедрения функционала в Мамбе (Михаил Буйлов)
Ontico
 

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 (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
Опыт эксплуатации большого проекта на Ruby
Alex Chistyakov
 
Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)Alex Dmitriev презентация для рит (12 14 апреля)
Alex Dmitriev презентация для рит (12 14 апреля)
rit2010
 
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Roman Pavlushko
 
Оптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на JavaОптимизация производительности нагруженных веб-систем на Java
Оптимизация производительности нагруженных веб-систем на Java
Alex Chistyakov
 
ekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилищеekbpy'2012 - Данила Штань - Распределенное хранилище
ekbpy'2012 - Данила Штань - Распределенное хранилище
it-people
 
"Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно..."Девопс - это не только для программистов. Практические примеры из жизни одно...
"Девопс - это не только для программистов. Практические примеры из жизни одно...
it-people
 
Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.Синяя Борода. История одного проекта.
Синяя Борода. История одного проекта.
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
 

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)
 

Último

СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
Хроники кибер-безопасника
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
Ирония безопасности
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
Хроники кибер-безопасника
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Ирония безопасности
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
Хроники кибер-безопасника
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
Хроники кибер-безопасника
 

Último (9)

Ransomware_Q3 2023. The report [RU].pdf
Ransomware_Q3 2023.  The report [RU].pdfRansomware_Q3 2023.  The report [RU].pdf
Ransomware_Q3 2023. The report [RU].pdf
 
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdfСИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
СИСТЕМА ОЦЕНКИ УЯЗВИМОСТЕЙ CVSS 4.0 / CVSS v4.0 [RU].pdf
 
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
ИСТОЧНИКИ ИННОВАЦИОННОСТИ КИТАЯ (ПО ВЕРСИИ DGAP) | The Sources of China’s Inn...
 
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdfMalware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
Malware. DCRAT (DARK CRYSTAL RAT) [RU].pdf
 
CVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdfCVE. The Fortra's GoAnywhere MFT [RU].pdf
CVE. The Fortra's GoAnywhere MFT [RU].pdf
 
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
Cyber Defense Doctrine Managing the Risk Full Applied Guide to Organizational...
 
2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf2023 Q4. The Ransomware report. [RU].pdf
2023 Q4. The Ransomware report. [RU].pdf
 
Cyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdfCyberprint. Dark Pink Apt Group [RU].pdf
Cyberprint. Dark Pink Apt Group [RU].pdf
 
MS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdfMS Navigating Incident Response [RU].pdf
MS Navigating Incident Response [RU].pdf
 

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