- •Розділ і: еволюція інструментальних технологій в середовищі Ruby on Rails
- •1. Знайомство з Ruby on Rails
- •2. Поговоримо про Ruby
- •3 . Філософія Ruby
- •4. Можливості Ruby
- •5. Переваги Rails
- •6. Філософія Ruby on Rails
- •7. Як працює mvc в Ruby on Rails?
- •9. Скаффолдинг
- •8. Active Record
- •10. Ajax (Asynchronous JavaScript and xml)
- •1. Популярність серед користувачів
- •2. Мови програмування
- •3. Концептуальна суть Rails та Django
- •4. Модель і база даних
- •5. Url Роутинг та контроллери
- •6. Контроллер, вид
- •7. Шаблон і форма
- •8. Адміністрування користувача
- •9. Ajax
- •10. Засоби для тестування
6. Контроллер, вид
Серед основних відмінностей:
У Rails – контроллер, в Django – вид. Те, що у Rails називається вид – у Django шаблон;
Rails успішно використовує скаффолдинг для побудови тимчасового контроллера і виду;
Django має вбудований вид, проте це не те саме, що у Rails. Він є зручним для таких загальних випадків: детальний список інтерфейсів, архів сторінок, вид для створення, редагування і видалення об’єктів. Звісно, не зважаючи на це, потрібно розробляти власний вид, який буде відрізнятися оригінальністю.
7. Шаблон і форма
Обидві платформи підтримують шаблони, які виступають наріжним каменем сутності MVC – розділення змісту від презентації (зовнішнього відображення). В загальному шаблони створювались для членів команди розробників, які не є програмістами.
Розглянемо дані платформи детальніше за цим питанням:
В Rails шаблон складає частину контроллера, Django, натомість для застосування шаблону використовує окрему міні мову, котра легка для вивчення людьми, що не є програмістами (найчастіше це дизайнери);
Реалізація у Rails має вигляд: “layouts” (батьківська сторінка), “partials” (включена підсторінка), “collections” (часткове повторення). Також у розробника є можливість створення власного “helper” для можливості розширення тегів;
Подібно і в Django – написаний шаблон має властивість розширювати батьківський шаблон, підключати під сторінки та писати традиційні фільтри і теги;
Обидва фреймворки можуть відсилати змінні у різні компоненти шаблону;
Для розробників, що віддають перевагу шаблонам Django, але працюють в Rails існує плагіна “Liquid”, яка повністю дозволяє виконувати роботу із шаблонами у стилі Django.
На даний момент у Django є можливість змінювати клас форми, що робить його більш гнучкішим;
Rails включає у себе підтримку найбільш поширених моделей, а також використовує “form_helpers”, які допомагають розробнику стандартизувати вид.
8. Адміністрування користувача
Як Django, так і Rails підтримують сесії та повідомлення (оскільки присутній користувач, повинен бути спосіб спілкування з ним). Для анонімних користувачів повідомлення між сторінками пересилаються за допомогою об’єкта “flash” у Rails, та напротязі сесії у Django.
9. Ajax
Усі з вищезгаданих фреймворків підтримують технологію AJAX. Проте кожен з них має суттєву відмінність у самому розумінні щодо AJAX та веб ужитку. Rails має вбудовану систему використання AJAX. Тобто при розробці програміст оперує лише методами Rails, не вживаючи явно JavaScript. Django надає можливість розробнику самому обирати AJAX та вбудовувати його в платформу.
10. Засоби для тестування
Rails використовує потужний спосіб для тестування програми. Створюється нова база даних, що ніяким чином не контактує з базою розробки і публікації. Таким чином можна сміливо вносити зміни в проект, не переймаючись за те, що будуть утрачені важливі дані.
У Django використовується окрема тестова консоль. А за бажання є можливість написати власний скриптовий файл для тестування test.py.
Висновок (ще одна думка)
Напротязі всієї роботи я намагалася якнайдоступніше розглянути усі переваги Ruby on Rails та порівняти її із Django. Тобто, суть полягала у тому, щоб зібрати разом усі відомі факти і правильно їх донести до читача. Та саме зараз я хотіла б відобразити ще одну думку – свою, власну, та поділитися враженнями про Ruby on Rails. Наперед хочу сказати, що усі наступні роздуми – суто суб’єктивна думка, в деяких випадках не побудована на наукових фактах.
Перше тісне знайомство з мовою Ruby в мене дійсно близько відбулося, коли я вирішила писати всі задані лабораторні роботи саме з її допомогою. Найперше, мене здивувало те, що синтаксис був дуже схожий на синтаксис мови С (серед вивчених Pascal, Delphi, Assembler, C для мене є найприємнішою). Присвоєння значення, ввід, вивід – ідентичні. Звісно, це не єдині ознаки подібності – їх багато. Тому я дотримуюся такої думки, що краще один раз побачити, ніж сто раз почути.
Досить цікаво пропонує Ruby працювати з масивами:
- масив не однотипний, але представляє собою набір об’єктів різних типів;
- нумерація відбувається у дві сторони: від 0 – до n-1, від -1 до –n. Таким чином, щоб потрапити на останній елемент потрібно всього-на-всього як індекс вказати -1 (mas[-1]);
- з будь-якого боку у масив можна додавати значення – об’єкти, при чому всі інші ззуваються;
Та це лише мізер з того, що дійсно може Ruby.
А ще мова пропонує широкий спектр функцій, що своїми зусиллями допомагають як юним, так і досвідченим програмістам (Уся навчальна інформація детально викладена у Вікіпідручнику за адресою http://en.wikibooks.org/wiki/Ruby_Programming ).
Для знайомства з RoR я обрала книгу Ruby on Rails – швидка веб-розробка (Up and Running) Bruce A. Tate and Curt Hibbs і одразу ж зіткнулася з проблемами. Не зважаючи на те, що у книзі дуже красиво і водночас доступно висвітлено основні особливості та переваги Rails, на той момент вона уже не відображала правильності роботи відносно поточної версії Ruby on Rails. Тому певний час я намагалася призвичаїтись до того, що я мала. Це було тяжко, і поступово я відкладала роботу у «довгий ящик» на майбутнє. Так продовжувалося довший час, аж поки я не знайшла дуже гарне джерело – «Гнучка веб-розробка в середовищі Rails» (Aglie Web Development with Rails (Second edition) Dave Thomas, David Heinemeir Hansson). Глибока, змістовна, вона одразу дала відповіді на мої запитання. Проте і у цьому випадку не обійшлось без труднощів. Платформа, що відображена у книзі базувалася на Rails версії старшій за 2.0. Справа в тому, що розробники випустили у світ версію 2.0, яка принципово відрізнялася від попередніх і була в деяких випадках несумісна з ними (в першу чергу скафффолдинг та ін.). На допомогу мені прийшла глобальна мережа Internet, зв’язок з якою відкрив переді мною можливість пошуку потрібної інформації, а головне – спілкування з іншими людьми. Таким чином я долучилася до групи Ruby on Rails: talk, і уже там дізналася про свою проблему. А також те, що вийшла у світ прекрасна книга, доповнена і актуальна у всіх нинішніх проблемах Rails – Aglie Web Development with Rails (Third edition) Dave Thomas, David Heinemeir Hansson. Саме третє видання найповніше і найякісніше описує варіанти розробки в середовищі Ruby on Rails.
Отже, я приступила до роботи. Проект полягав у розробці веб-магазину. І мені успішно все вдавалося. Тому я вирішила писали лабораторні роботи з ООП на Ruby on Rails. І тут я помітила значний недолік найосновнішої переваги Rails. Те, що створювалось автоматично, за допомогою скаффолдингу, давало відчуття того, що я умію працювати з цією платформою. Та коли прийшлось писати код вручну (незначну його частину, трохи модифіковану) одразу дало знати мені про те, що я нічого не вмію. І тут мимоволі підкралася думка, про те, що потрібно знати все і пробувати писати самому, бо властивість Rails – скаффолдинг можна використовувати тільки тим людям, які можуть написати той самий код вручну. Так я побачила, що робота з Ruby on Rails включає в себе знання не тільки мови Ruby, властивостей платформи Rails, але й мову відображення HTML, та допоміжну їй таблицю стилів css. І я здогадуюсь, що це тільки частина з необхідного до розуміння.
Так як повністю свій проект Depot (магазин) я ще не завершила, то і не можу суттєво говорити про речі, які повинен знати кожен програміст.
Та щоб не завершувати на сумній ноті я хочу показати незначний результат, який мені вдалось досягнути.
Depot – головна сторінка користувача.
Лабораторна робота з використанням бази даних.
Звісно, це не найкращі роботи, які можливо було б зробити, але я точно знаю, що кожен шлях починається з маленького кроку. Тому я буду продовжувати і надіюсь разом з Rails поступово пройти його.
Корисна література:
http://www.37signals.com/
http://xomkalla.wordpress.com/
http://uk.wikipedia.org/
http://rubyonrails.org/
http://www.tiobe.com/
Aglie Web Development with Rails (Second edition) Dave Thomas, David Heinemeir Hansson
Ruby on Rails (Up and Running) Bruce A. Tate and Curt Hibbs
Evaluating Web Development Frameworks: Rails and Django Jonathan S. Linowes
1 Aglie Web Development with Rails (Second edition) Dave Thomas, David Heinemeir Hansson р. 134
2 Ruby on Rails (Up and Running) Bruce A. Tate and Curt Hibbs р. 121-122
3 http://www.tiobe.com/index.php/content/paperinfo/tpci/index.html
