Быстрый старт - Rails + SQLite
В данном туториале сделаем простое DB web-приложение, на базе SQLite.
Предполагаем, что Rails уже установлен (также средой является win32).
Устанавливаем SQLite
Я использую SQLite версии 3.
SQLite это "легкая" реализация SQL базы данных, она работает с файлом напрямую.
Для работы с SQLite необходимы 2 файла: sqlite3.exe - для управления файлом (создание/удаление таблиц и т.д.), и сам "движок" для работы с API - sqlite3.dll.
Скачиваем файлы отсюда:
* sqlite-3_2_7.zip
* sqlitedll-3_2_7.zip
Разархивируем, и размещаем файлы в "видимых" папках, например, я записал эти (sqlite3.dll, sqlite3.exe) файлы в C:rubybin папку.
Установка Ruby адаптера для работы с SQLite
Для работы с SQLite из Ruby необходим соотв. интерфейс, его можно взять тут (A Ruby interface for the SQLite database engine). Из списка файлов, выбираем sqlite3-ruby-1.1.0-mswin32.gem, скачивем его, и далее находясь в папке, где лежит скаченный файл sqlite3-ruby-1.1.0-mswin32.gem, набираем
gem install sqlite3
он должен найти локальный файл, и установить Ruby адаптер для SQLite версии 3. В более простом варианте (если машина подключена к интернет, и нет проблем с прокси), можно просто набрать
gem install sqlite3
и gem сам все скачает и установит.
Создание Rails приложения
Генерируем приложение
В папке, где хранятся наши rails приложения (например, C:rails), набираем в командной строке:
rails test
создастся папка test и в ней сгенерируется структура папок для rails приложения.
Настраиваем и создаем БД
Заходим в папку test/config, находим файл database.yml - в нем хранится информаци об адаптере БД который используется, и соотв. настройки.
Видим, настройки для режима development:
development:
adapter: mysql
database: test_development
socket: /path/to/your/mysql.sock
username: root
Меняем адаптер на SQLite - т.к. версия 3я, то адаптер называется sqlite3, далее для этого адаптера один параметр - dbfile - путь к файлу. Наш файл будет лежать в папке db/ (относительно корня нашего Rails приложения test/), и называться test.db (мы создадим его немного позже).
Получается database.yml файл:
development:
adapter: sqlite3
dbfile: db/test.db
Надо создать файл БД для SQLite. Для этого заходим в папку test/db/. Создаем файл db.sql - в нем будем хранить sql для создания нашей БД, пусть это будет простая таблица для хранения статей - ид, заголовок, текст (файл db.sql):
drop table articles;
create table articles(
id integer primary key,
title varchar(255),
text varchar(1024)
);
Теперь запускаем:
sqlite3 -help
видим ключик -init filename read/process named file, и соотв. получается запрос, где последним указан файл:
C:railstestdb>sqlite3 -init db.sql test.db
таблица должна быть добавлена (можно сделать bat файл, который будет делать это обновление), проверяем внутри sqlite>, набираем .tables. - видим нашу таблицу.
выходим из sqlite> - .q
Замечаем, что появился файли test.db, размером 2048 байт. Все, таблица есть, теперь надо сделать модель и контроллер в Rails для работы с ней.
Создаем модель/контроллер
Модель - находясь в папке test набираем:
ruby script/generate model Article
(заметим, что мы просто запускаем Ruby скрипт generate, с параметрами), результатом будет модель-класс, который работает с таблицей articles.
Контроллер - находясь в папке test набираем:
ruby script/generate controller Article
создается класс-контроллер, который, судя по своему названию, будет "откликаться" на URL запросы, вида 'http://localhost:3000/article' (когда будет запущен веб-сервер).
Теперь надо связать контроллер с моделью, для этого заходим в папку testappcontrollers, находим файл article_controller.rb (это контроллер, который мы недавно сгенерировали), открываем:
class ArticleController < ApplicationController
end
видим класс ArticleController, который пронаследован от ApplicationController. Добавляем scaffold (это команда для автоматической работы с базовыми операциями над БД - список, добавление, изменение, удаление, просмотр), файл article_controller.rb:
class ArticleController < ApplicationController
scaffold :article
end
Запускаем веб сервер
Находясь в папке test, набираем:
ruby script/server
- запускается WEBRick веб-сервер, по умолчанию с utf8 кодировкой, и на 3000 порту (параметры запуска можно увидеть по команде ruby script/server -help)
Смотрим результат
Запускаем Firefox, набираем в строке url:
http://localhost:3000/article
Где:
* 3000 - это порт, на котором запустился веб-сервер WEBRick
* article - это контроллер, который мы запрашиваем.
И видим интерфейс для работы с таблице articles (по умолчанию):
* просмотр списка
* добавление новой записи
* просмотр/изменение/удаление записи
Чтобы увидеть все эти операции в коде, есть следующий генератор:
ruby script/generate scaffold Article Article
(надо запустить его находясь в папке test), и нажать "y", на подтверждение перезаписи файлов. В данном примере, первый параметр - название модели, второй параметр - название контроллера.
После данной генерации контроллер test/app/controllers/article_controller.rb, "обрастет" соответсвующими методами для работы с таблицей. Также в папке testappviewsarticle будут созданы rhtml шаблоны, которые используется при работе.
Меняем урл по умолчанию
Единственное неудобство, это то, что надо прописывать /article при первоначальном запросе. Это решается редактированием testconfigroutes.rb файла.
Надо удалить файл public/index.html, и добавить строку:
map.connect '', :controller => "article"
в routes.rb файл.
Теперь по URL'у http://localhost:3000/ открывается контроллер article.