Недавно в одной статье я кратко описывал свои впечатления от языка программирования Ruby и почему я начал на нем писать. Разрабатывая приложения на Ruby я не мог не заметить фреймворк для разработки Web-приложений Ruby on Rails. Так как с MVC фреймворками я не очень знаком, пробовал только Yii, а я занимался в основном разработкой модулей для уже готовых систем и их доработкой, времени у меня на изучение особо не было. Однако возможность разрабатывать сайты на Ruby меня заинтересовала. И сегодня я вам постараюсь кратко рассказать об особенностях использования данного фреймворка.
Ruby on Rails — фреймворк, написанный на Ruby, использует архитектурный шаблон MVC(Model-View-Controller) и обеспечивает интеграцию этого шаблона с веб-сервером, и базой данных. Более детальное описание вы можете прочитать на википедии.
А сейчас мы разберемся как установить Ruby on Rails на Ubuntu/Windows.
Установка RoR на Ubuntu
Подробный гайд по установке Ruby on Rails.
Установка RoR на Windows
Думаю проблем с установкой у вас возникнуть не должно, максимум 25-30 минут при установке на Linux like и пару минут на установку для Windows. На выходе получаем полностью готовый к использованию фреймворк.
Создание приложения
Создавать веб-приложения на RoR очень просто, достаточно лишь одной команды: rails new AppName
. Далее фреймворк создаст папку с именем AppName
и всю структуру файлов и папок. Вы сразу можете запустить приложение выполнив команду rails s
в папке с проектом и открыв ссылку http://server_ip:3000/
увидите страницу приветствия Rails.
MVC в Ruby on Rails
Как большинство из вас знает MVC — это несколько шаблонов проектирования, а именно Model(Модель), Viewer(Представление/Вид), Controller(Контроллер), с помощью которых модель приложения, его представление и взаимодействие с пользователем разделены на три отдельных части таким образом, чтобы модификация одной части приложения минимально влияла на остальные две.
Контроллер и Вид
Создать контроллер можно командой rails g controller ControllerName ...
. В качестве параметров мы указываем названия представлений(views). После выполнения данной команды будет создано несколько файлов в папке app/views/ControllerName
и сам файл контроллера в папке app/controllers/controller_name.rb
. Каждый метод контроллера отвечает за определенное представление(view).
Модель
Контроллер с представлениями создан, теперь нужно сгенерировать модель данных(Model). Вкратце, модель — это то, как наши объекты будут выглядеть в базе данных. В файле модели в основном содержатся валидации, отношения и определенные методы для работы с объектом. Для создания модели предназначена команда rails g model ModelName field:type
. После имени модели мы задаем имя первого столбца и его тип и через пробел добавляем еще столбцы. Столбец с id генерировать не нужно, rails делает это автоматически. Для того, чтобы узнать какие типы данных для столбцов доступны введите команду rails g model -h
. После создания модели мы получаем файл модели app/models/modelname.rb
и миграцию для базы данных в директории db/migrate
.
Scaffolding
О миграциях мы поговорим дальше в статье, а я хочу вспомнить о такой штуке как скаффолдинг. Скаффолдинг позволяет нам создать сразу всю структуру объекта, включая представления, контроллер, модель и миграцию. Выполняется он командой rails g scaffold Name param:type
. Однако я не рекомендую использовать такой подход, он искажает понимание самого фреймворка Ruby on Rails и может замедлить его изучение.
Миграции
Миграции позволяют нам создавать таблицы в базах данных, изменять и добавлять столбцы в уже существующие таблицы, да и делать практически любые операции с базой данных не прибегая к ручному редактированию базы. Мы просто описываем нашу таблицу, столбцы и типы данных которые в них будут хранится, запускаем миграцию, а далее фреймворк сам все сделает за нас. Миграции генерируются автоматически при создании моделей, однако их можно создавать вручную при помощи команды rails g migration MigrationName
. После, в файле миграции объявляем нужные параметры. Подробно о миграциях описано в гайдах.
Роутинг
Прелесть рельс в том, что мы можем создать абсолютно кастомный путь к контроллеру. Редактировать пути можно в файле config/routes.rb
. Синтаксис объявления путей очень простой, root 'pages#index'
— данная строка означает, что корневой страницей(index) будет у нас контроллер pages
и действие index
. Get запрос выглядит вот так get 'signup' => 'users#new'
, ссылка вида http://site.com/signup
будет вести к контроллеру users
и действию new
, что в свою очередь откроет страницу с формой для регистрации. Post запрос post 'signup' => 'users#create'
вызовет контроллер users
и действие create
, этим самым действием будет зарегистрирован новый пользователь. Роутинг довольно большая тема и описать некоторые нюансы у меня не получится, так как будет очень много текста, поэтому более детально можете прочитать вот здесь.
На первых порах фреймворк Ruby on Rails может показаться сложным и многие нюансы вам будут непонятны, однако с опытом все придет само. Главное не останавливаться и постоянно развивать свое приложения, тогда результат будет достигнут и знания получены.
То, что я описал в этой статье, это самый необходимый минимум для создания простого приложения на рельсах.