
- •Розділ і: еволюція інструментальних технологій в середовищі Ruby on Rails
- •1. Знайомство з Ruby on Rails
- •2. Поговоримо про Ruby
- •3 . Філософія Ruby
- •4. Можливості Ruby
- •5. Переваги Rails
- •6. Філософія Ruby on Rails
- •7. Як працює mvc в Ruby on Rails?
- •8. Active Record
- •9. Скаффолдинг
- •10. Ajax (Asynchronous JavaScript and xml)
- •1. Популярність серед користувачів
- •2. Мови програмування
- •3. Концептуальна суть Rails та Django
- •4. Модель і база даних
- •5. Url Роутинг та контроллери
- •6. Контроллер, вид
- •7. Шаблон і форма
- •8. Адміністрування користувача
- •9. Ajax
- •10. Засоби для тестування
3. Концептуальна суть Rails та Django
Спільні риси:
Об’єктна архітектура – використовуються класи, інкапсулюються дані;
Легка розробка – швидке і якісне виконання будь-яких змін;
DRY (Don’t Repeat Yourself);
Просте моделювання даних з можливістю інкапсуляції бізнес логіки в об’єкти, та можливість створення, зчитування, оновлення, видалення таблиці з бази даних;
Карта подій, коли при виклику програми остання доступається до моделі і повертає відповідь у вигляді сторінки на браузері;
Використання відокремлених методів, таких як HTML чи CSS для відображення сторінки;
По замовчуванню обидві платформи мають:
вбудовану систему тестування;
генерації документів;
вбудований веб сервер (Mongrel, WEBrick у Rails);
Підтримують:
скрипти для створення нових проектів з різних файлів;
Відмінності:
- Rails має вигляд «інтелектуальної платформи», яка думає разом із розробником. Тому увесь результат має дещо «магічний», навіть «казковий» вигляд, на відміну від Django, де результат – це зусилля розробника;
- Правило «обмеження звільняють» надає Rails можливість автоматичного створення елементів програм, що складають єдине ціле. Сайт, написаний на Django, будується з кількох програм, віддалених одна від одної, які потрібно підключати;
- Домовленість по конфігурації (описані вище у «Переваги Rails»);
- Стандартизована AJAX бібліотека у Rails. Django ж не інкапсулював його у платформу;
- Обробники URL в Django конфігуруються явно за допомогою регулярних виразів, а не виводяться із структури контролерів автоматично;
- Концепція MVC має дещо інший вигляд View-Template-Controller (Вид-Шаблон-Контроллер).
4. Модель і база даних
Для опису особливостей кожної із платформ я знову ж таки старатимусь описати все по пунктам. Отже:
обидві платформи використовують об’єктно-реляційне відображення (ORM), яке присутнє між базою даних і об’єктами класу. У Rails воно представлене за допомогою Active Record, у Django – Model (означає вільну підтримку API для бази даних);
надають імена полів, типи, атрибути класу. У розробника є можливість встановлювати обмеження на кожне поле, задавати автоматичні значення та відношення таблиць one-to-many and many-to-many;
підтримують «ледачий доступ». Це означає, що доступ до бази даних не потребує надмірних дій;
обидві платформи дозволяють оприділяти «гаки» - функції, які можна використовувати для спеціальних операцій без змін коду (before filter, after filter). Для Rails – це “observers” (спосттерігачі), у Django – “signals” (смгнали).
Підтримка таких серверів баз даних як: Mysql, PostgreSQL, SQLite, Oracle, MSSQL (для Django).
Rails має потужний інструментарій міграцій, що визначають скрипти бази даних, та за допомогою яких легко заповнити таблиці. У Django міграцій немає;
5. Url Роутинг та контроллери
URL Роутинг – це те, яким чином платформа інтерпретує запит від користувацького браузера і вирішує, яка саме функція буде обробляти цей запит. Для зручності користувача давно розроблено URL, за допомогою якого певна дія стає читабельною і зручною.
Rails має спеціалізовану директорію config/routes.rb, файл якої надає можливість зв’язувати посилання із певним об’єктом без внесення змін в основний код;
Rails підтримує генератор – метод url-for, який дозволяє не прописувати істинної url-адреси у коді програми, а, натомість, використовувати правила, оголошені в routes.rb;
У Django теж наявний файл відображення url – urls.py;
Django одразу додає тег шаблону для генерації url згідно із конфігурацією файлу urls.py;
Django використовує об’єкти Http-запиту та Http-відповіді для передачі поточного стану у систему. Http-запит уміщує в собі метадані про запит (інформація про пересилання і сесію); У відповідь отримують Http-відповідь (тіло виду HTML та ін.);