Ruby on Rails. Установка, настройка, початок роботи
Установка.
Просто і швидко ror ставиться через rvm c rvm.io/.
* $ HOME надалі.
Після цього в $ HOME / .bash_profile повинна з'явитися строчка:
і при кожному відкритті консолі rvm буде довантажувати, але у мене цього не сталося - довелося ще в $ HOME / bashrc прописувати:
Перевірка на успішність створення
повинна повернути більш детальну інформацію, начебто
В процесі установки я випадково встановив кілька версій, що потім доставило деякі неприємності). Подивитися список встановлених версій рубай можна так:
> Rvm list
Якщо версій кілька, то поточна буде позначена "=>", дефолтна - "*", а поточна і дефолтна - "= *". Поміняти на потрібну використовувану версію можна так:
Щоб поміняти дефолтну версію рубай пишемо:
Створення проекту.
Тепер можна перейти безпосередньо до створення проекту. Створюємо папку $ HOME / ROR / tickets, заходимо в неї і робимо наступне.
При створенні проекту будуть згенеровані всі необхідні директорії (app, config, db, log і т.п.) і конфігураційні файли в цій папці. Для роботи невеликого тестового проекту нам буде потрібно, в моєму випадку, база даних PostgreSQL, пара gem-ів (бібліотек) і запущений rails сервер).
Для запуску сервера потрібно, перебуваючи в корені папки зі створеним проектом запустити команду:
де s - команда запуску сервера (server), а -p 3000-номер порту (port), за яким буде доступний проект. Що б запустити консоль, потрібно набрати:
База даних.
Щоб працювати з постгресом, додаємо в кінець файлу Gemfile, який повинен знаходиться в корені проекту, рядок
> Gem 'pg'
зберігаємо файл і робимо
його ми робимо кожен раз, коли вносимо зміни в Gemfile, а потім ще й перезапускаємо сервер. Щоб сюди більше не повертатися, відразу ж додаємо і
> Gem 'haml-rails' для швидкої і зручної (після того як звикнеш)) розмітки шаблонів-уявлень. Тепер відредагуємо атрибути Конект до постгресу в файлі database.yml. Він знаходиться в папці $ HOME / ROR / tickets / config / і повинен буде містити такий блок:
з потрібними користувачем і ім'ям БД, у мене це tickets і tickets відповідно).
Начебто все приготування закінчені і можна приступати до створення моделі, контролера та подання.
Створюємо два методу - up і down, які використовуються за замовчуванням функціями роботи з міграціями - вони, відповідно, створюють і видаляють нашу таблицю. Назви типи даних будуть залежати від використовуваної БД. Первинний ключ створюється за замовчуванням і буде називатися id, але його можна задати і явно:
А якщо ми не хочемо створювати первмчний ключ взагалі, пишемо так:
Зберігаємо і пишемо в консолі:
В результаті дії цієї команди виконуються всі невиконані методи up з файлів міграцій в директорії $ HOME / ROR / tickets / app / db / migrate /. Всі відомості про стан таблиць можна подивитися у файлі $ HOME / ROR / tickets / app / db / shema.rb.
Запускає метод down останньої виконаної міграції, в результаті чого таблиця віддаляється з БД. Щоб відкотити більше міграцій, потрібно додати до команди rollback параметр STEP:
ця команда відкотить три останні міграції. Подивитися статус всіх міграцій в консолі:
Якщо потрібно запустити якийсь певний метод з певної міграції, то додаємо параметр VERSION:
У файлі моделі ($ HOME / ROR / tickets / app / models / user.rb) нам поки потрібно зробити тільки одне - визначити поля таблиці, які будуть доступні для зміни з контролера, в цілях безпеки, як я розумію). Для цього пишемо в ньому наступне:
Поки програма не працює, для того, щоб упевнитися, що всі створені таблиці дійсно створені і функціонують як їм і належить, можна скористатися раілс консоллю:
ця команда не зробить запис в таблицю, але створить об'єкт руюі в пам'яті з усіма встановленими атрибутами. А тепер зробимо запис:
в разі успіху повинна повернути true. Запис можна створити і однією командою - create:
Щоб перевірити чи є об'єкт в БД, можна використовувати find:
поверне об'єкт або помилку: «ActiveRecord :: RecordNotFound: Could not find User with id = 1», а так само і сам згенерований sql-запит до БД.
Шукати можна і по конкретним полях:
Ще кілька зручних методів, які напевно стануть в нагоді на перших порах:
> User.first і User.last -повернутися перший і останній запис в таблиці відповідно, а User.all поверне масив всіх об'єктів таблиці.
Контролер.
В результаті цієї команди будуть створені файл контролера: $ HOME / ROR / tickets / app / controllers / users_controller.rb і директорія для уявлень:
$ HOME / ROR / tickets / app / views / users /. Кожному методу котроллер буде відповідати уявлення з такою ж назвою, в цій папці. Їх можна створювати вручну, а можна і відразу при створенні контролера:
У цьому випадку файли представлень створяться автоматично в папці $ HOME / ROR / tickets / app / views / users / і будуть називатися (якщо ви не забули підключити haml) index.html.haml і list.html.haml. Видалити контролер можна так:
де d- скорочення від destroy
Визначати метод index, який створюється за замовчуванням, не обов'язково. Вміст нашого контролера users буде таким:
У users_list буде масив об'єктів користувачів, яких ми по ідеї вже понадобавлялі з консолі, а "@" означає, що змінна буде передана в шаблон.
Подання.
Рівень вкладеності задається табуляцією, атрибути тегів пишуться «хешеобразно» в фігурних дужках:
а вміст - через пробіл:% td test. Таким чином вміст нашого уявлення:
Дефіс - виконуваний код в шаблоні. Тут ми проходимся по масиву об'єктів і виводимо в циклі його методи - поля name і role і id.
Всі вистави «обертаються» в головний шаблон, який знаходиться в $ HOME / ROR / tickets / app / views / layouts / application.html.haml
Видаляємо все, що в ньому є і робимо його максимально простим:
Вміст всіх наших згенерованих шаблонів підставляється замість = yield. Головне не помилитися з рівнями укладення, мене це спочатку дуже напружувало).
І залишився тільки один маленький крок - редагування файлу-конфіга маршрутів (url) - routes.rb. Він знаходиться в $ HOME / ROR / tickets / config /. У ньому описуються всі маршрути нашого проекту. Зараз там буде тільки два записи:
Це рутовий шлях на «головну» сторінку (буде показуватися вміст шаблону /users/index.html.haml, навіть незважаючи на те, що метод index в контролері не визначений) і шлях до сторінці виведення списку користувачів. У разі, якщо до методу буде пост запит, він повинен буде прописуватися так:
post «users / add».
Тепер все має працювати)