Создание Ruby on Rails - проекта (RoR)

Общие сведения для запуска первого проекта на RoR, предназначенные для разработчиков начального уровня.

Общие сведения

Для создания RoR-проекта надо в командной строке выполнить:

- для версии rails 2.3.х

rails <имя проекта>

- для версии rails 3.0.х 

rails new <имя проекта>

В результате в текущем каталоге будет создан каталог <имя проекта>, содержащий несколько подкаталогов.

Один из основных принципов разработки на RoR - использование соглашений вместо ручного конфигурирования (convention over configuration), означающий что RoR-фреймворк найдет нужные файлы, если те положены в предопределенные каталоги и имеют правильным образом сформированные имена. Это поведение, однако, при необходимости может изменяться разработчиком в каждом конкретном случае. Поэтому названия сгенерированных подкаталогов имеют значение.

1. Основные каталоги

Разработка на RoR базируется на идеологии MVC (Model-View-Controller). Генератор rails создает следующие каталоги:

app - каталог, содержащий код приложения. Содержит следующие подкаталоги:

controllers - каталог, содержащий файлы контроллеров (controller). Файл контроллера имеет имя вида <название контроллера>_controller.rb Каталог может иметь подкаталоги, при этом имена классов контроллеров в файлах в подкаталогах должны включать путь вверх до этого каталога исключительно;

views - каталог, содержащий файлы шаблонов, отображающих информацию (view). Содержит подкаталоги c шаблонами для контроллеров, поэтому имена подкаталогов должны совпадать с названием контроллеров. Один контроллер может использовать несколько наблонов. Кроме того в общем подкаталоге (названном, например, shared) можно хранить шаблоны, общие для всех шаблонов приложения;

helpers - каталог, содержащий файлы модулей, в которых описаны методы-теги, часто используемые разных местах одного/всех шаблонов. Файлы имеют имя вида <название контроллера>_helper.rb;

models - каталог, содержащий файлы, описывающие модели предметной области (model). Каталог может иметь подкаталоги, при этом имена классов моделей в файлах в подкаталогах должны включать весь путь до родительского каталога исключительно. RoR использует ORM ActiveRecord, позволяющий динамически определять название и список полей конкретной модели по имени файла и метаданным в базы данных, поэтому нет необходимости описывать поля данных в файле класса модели, описывать надо только связи между моделями.

config - каталог, содержащий файлы настроек, определяющих настройки среды выполнения, соединения c базой данных, связь URL c контроллерами и т.п. Файл database.yml описывает основные параметры соединения с базой данных:

adapter - название гема адаптера для базы данных, ставится через gem install;

database - имя базы, с которой устанавливается соединение;

encoding - кодировка базы;

username - имя пользователя;

password - пароль пользователя и т.п..

Набор параметров зависит от выбранной базы данных. Параметры соединения необходимо указать для каждого из типов запуска приложения (production, development, test) отдельно.

public - каталог, содержащий статические данные, стили, файлы с кодом javascript, отдаваемые браузерам.

2. Запуск RoR-приложения

Запустить приложение можно выполнив script/server из каталога приложения. При этом запустится встроенный сервер WEBrick. По умолчанию приложение запускается в режиме development и готово принимать соединения по протоколу HTTP на 3000 порту.

Параметры запуска можно менять (список параметров - script/server с параметром help). При запуске RoR ищет файл index.html и выдает его содержимое в браузер. Чтобы направить запрос на, например, собственный контроллер с приветствием необходимо удалить этот файл и в файле config/routes.rb добавить мэппинг маршрута, соответствующего корню сайта на нужный котроллер, например:

map.root :controller => "welcome"

 

При этом будет RoR будет искать класс WelcomeController в файле app/controllers/welcome_controller.rb и вызывать его метод index, а если такого не найдено, то попытается отдать файл app/views/welcome/index.rhtml (расширение имени файла может меняться от версии к версии RoR).

Дополнительная информация на сайте Ruby on Rails:

guides.rubyonrails.org

Вам также может помочь