Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_по созданию ИС с помощью RoR_2018.docx
Скачиваний:
9
Добавлен:
17.06.2023
Размер:
12.5 Mб
Скачать

1.2 Разработка простейшего приложения с целью проверки работоспособности установленного по

Фреймворк Ruby on Rails поддерживает структуру MVCприложений. Концепция MVC позволяет разделить данные, представление и обработку действий пользователя на три отдельных компонента:

- Модель (англ. Model). Модель предоставляет знания: данные и методы работы с этими данными, реагирует на запросы, изменяя своё состояние. Не содержит информации, как эти знания можно визуализировать.

- Представление, вид (англ. View). Отвечает за отображение информации (визуализацию). Часто в качестве представления выступает форма (окно) с графическими элементами.

- Контроллер (англ. Controller). Обеспечивает связь между пользователем и системой: контролирует ввод данных пользователем и использует модель и представление для реализации необходимой реакции.

Более подробной про MVCбудет описано ниже (кроме этого рекомендуем обратиться к литературе [2]).

Следует отметить, что Ruby on Rails сам создаст необходимую для работы структуру приложения (как бы исходный «шаблон»). В дальнейшем, создавая необходимые элементы своего приложения мы этот «шаблон» будем наполнять и развивать.

В нашем пробном примере мы будем создавать приложение в каталоге под названием work.

Примечание.

Необходимо отметить, что наше первое приложение будет простым и, при этом, не использовать какие либо данные, хранящиеся в базе данных (БД).

Фактически мы спроектируем web-приложение, которое состоит из двух связанных страниц. Все это мы сделаем, только для того, чтобы Вы проверили работоспособность среды Ruby on Rails и уяснили общий подход к разработке приложений.

Перед началом работы, необходимо на диске C:\ создать папку work, туда будет устанавливаться проект для работы с примером.

Далее необходимо указать путь в bat-файле, запускающем Ruby, на рабочую папку. Запускаемый файл лежит в папке: C:\Bitnami\use_ruby.bat

Рисунок 1.12 – Изменение пути запуска

Примечание.

Для надежной работы со средой Ruby on Rails следует вышеописанный bat-файл (use_ruby.bat ) запускать с правами администратора.

Рисунок 1.13 – Первый запуск bat-файла use_ruby.bat

Для создания нового рабочего проекта с именем demo, необходимо прописать в командной строке следующей код:

rails new demo

Примечание.

Здесь и в дальнейшем команды Ruby следует писать строчными (маленькими) буквами.

Рисунок 1.14 – Ввод команды rails new demo

Чтобы заставить Ruby On Rails (ROR) стал сразу же работать, ему нужно дать возможность отыскать все разнообразие компонентов вашего приложения. Для этого нужно создать конкретную структуру каталогов. Команда rails создает для нас эту структуру каталогов и заполняет ее стандартным Rails-кодом.

После ввода команды произойдёт создание проекта, результат выполнения будет таким как на рисунке 1.15.

Рисунок 1.15 – Процесс создания вашего первого проекта demo

Выполненная команда создала проект по имени demo. Ддля перехода в созданный для приложения demo каталог необходимо выполнить команду (в командной строке):

cd demo

Включенные в созданный каталог demo файлы представляют собой все, что нужно для запуска автономного веб-сервера, способного выполнять наше только что созданное Rails приложение demo.

В корневом каталоге вашего приложения содержится файл Gemfile, в котором перечисляются зависимости вашего приложения, то есть где искать новые gem (библиотеки), какую версию Rails использовать и т.д. Кроме файла Gemfile будет появляться еще файл Gemfile.lock, в ктором прописаны конкретные версии gem (библиотек).

Примечание:

После создания приложения для его запуска и настройки необходимо проверить, чтобы все гемы (библиотеки) соответствовали версиям, прописанным в файле Gemfile, и вообще были подгружены в проект. Для этого пропишем в консоли команды:

bundle update (эта команда обновит и подгрузит необходимые гемы;)

bundle show (эта команда покажет какие геммы установлены;)

bundle install (эта команда установит все необходимые гемы.)

Если не удалось обновить гемы (библиотеки), то можно воспользоваться способом подробно описанным во 2 главе данных методических указаний (примечание с двумя вариантами решения проблемы).

Давайте запустим наше приложение под названием demo. Отметим, что мы используем Интернет –технологии, а поэтому для нормальной работы нам необходим функционирующий web-сервер, и браузер посредством которого мы будем работатьс нашим приложением.

Какой веб-сервер будет запущен, зависит от того, какой сервер установлен. Например, WEBrick— веб-сервер, специально предназначенный для Ruby, который распространяется вместе с Ruby и поэтому является гарантированно доступным. Но, если на вашей системе установлен другой веб-сервер (и Rails может его найти), то можно работать именно с ним. В качестве браузера может быть любой (например Opera, Mazila и т.п.).

Итак, для запуска web-сервера выполним следующую команду:

rails server

Если у Вас есть сомнения, то можно указать, что Вы запускаете именно WEBrick

rails server WEBrick

В результате успешного запуска web-сервера мы получим вот такой текст:

Рисунок 1.16 – Запуск сервера

Для наглядного представления результата правильности выполненных действий, и получения доступа к вновь созданному приложению запустим браузер и перейдем по следующему адресу URL: http://localhost:3000.

В представлении своих пользователей Rails-приложение, как, собственно, и любое другое веб-приложение, связано с URL-адресом. Когда браузеру указывается этот URL-адрес, происходит обращение к коду приложения, который генерирует для вас ответ.

После перехода по адресу, мы увидим следующее (рис.1.17). Итак, у нас есть запущенное новое приложение, но в нем вообще пока еще нет ни одной строчки нашегокода.

Рисунок 1.17 – Результат правильно работающего web-сервера и нашего приложения demo

Примечание1:

Если результат оказался другим, то нет смысла далее проводить разработку приложения. Поэтому добейтесь, чтобы все работало правильно.

В случае неправильной работы, проверьте используется ли у Вас в сети Proxy сервер и настройте Ваш браузер так, чтобы он НЕ использовался!

Примечание2:

Остановить работу web-сервера можно нажав, комбинацию клавиш в консоли Ctrl+C и на запрос «Завершить выполнение пакетного файла» ввести команду «y».

Проверить остановлен ли сервер, можно запустив диспетчер задач (комбинация Ctrl+Shift+Esc) и в вкладке процессы для всех пользователей, проверить отсутствие соответствующего процесса (например, tvnserver либо ruby, либо какое-то другое название в зависимости от версии сборки) . Запуская и останавливая работу web-сервера можно опытным путем установить какой процесс появляется и исчезает.

Для испытания нового проекта demo необходимо создать соответствующие элементы.

Как мы указывали выше, Rails относится к среде Модель—Представление—Контроллер (Model—View—Controller). Rails получает входящие запросы от браузера, декодирует запрос для поиска контроллера и вызывает в контроллере метод, который называется действием. Затем контроллер вызывает соответствующее представление, отображающее результаты на экране пользователя. Rails берет на себя управление большей частью внутренних каналов, связывающих все эти действия. Чтобы создать простейшее приложение Hello, World!, нам нужен код для контроллера и представления и нужен связывающий их маршрут. Для модели нам код не нужен, поскольку мы не имеем дела с данными.

Начнем с контроллера.

Отключим сервер и в консоли выполним команду для создания контроллера:

rails generate controller Say hello goodbye

Результат ввода команды представлен на рисунке 1.18.

Рисунок 1.18 – Выполнение команды создания контроллера

Для дальнейшей работы, нам необходимо специализированный текстовый редактор (например, такой как Sublime Text 2 или NetBeans IDE 8.1). В нашем случае будет использоваться Sublime Text 2.

Рисунок 1.19 – Рабочее окно Sublime

В Sublime Text 2 необходимо добавить созданный ранее проект demo в папке work, для этого проделаем следующее: File\Open Folder\ выберем папку по адресу C:\work\demo.

После выполненной ранее команды, rails generate controller Say hello goodbye, у нас создался контроллер Say (появился новый класс SayController, в котором два пока пустых метода hello и goodbay) именно для работы с ним нам и потребовался специализированный текстовый редактор.

Примечание:

Подробно о том, как происходит название имен классов, объектов, переменных смотри [2] ( Руби С., Томас Д., Хэнссон Д. Гиюкая разработка веб-приложений в среде Rails. 4-e издание – СПб.: Питер, 2014. – 448с. в подразделе 18.2. Соглашения об именах). Этот источник имеется в комплекте материалов к лабораторным работам

Попробуем сделать первые шаги в Sublime Text 2, для этого сначала нужно найти исходный файл контроллера Он находится в файле demo/app/ controllers/say_controller.rb

Рисунок 1.20 – содержание файла контроллера

Запустим сервер и браузер перейдем по адресу http://localhost:3000/say/hello.Мы увидим на экране окно, похожее на то, которое показано на рисунке 1.21.

Рисунок 1.21– Пример шаблона, подготовленного для наполнения

На рис.1.21 мы можем увидеть не только ответ на вопрос, подключен ли URL-адрес к нашему контроллеру, но также и то, что Rails указывает путь к нашему следующему шагу, а именно — сообщению Rails о том, что отобразить на экране. Далее начинаем работать представления. Вспомните: когда мы запустили сценарий для создания нового контроллера, эта команда добавила к нашему приложению дополнительные файлы и новый каталог. В этом каталоге содержатся файлы шаблонов для представлений контроллера. В нашем случае мы создали контроллер, названный say, следовательно, представления будут находиться в каталоге app/views/say.

По умолчанию Rails ищет шаблоны в файле с тем же именем, что и у действия, занимающегося его обработкой. В нашем случае это означает, что нам нужно изменить файл по имени hello.html.erb в каталоге app/views/say.

После перехода к этому каталогу, необходимо сделать так же как на рисунке 1.22.

Рисунок 1.22 – Изменение файла представления Hello в редакторе SublimeText

Выполняем сохранение и переходим по ссылке для проверки измененийURL: http://localhost:3000/say/hello

Рисунок 1.23 – Проверка сделанных изменений

Всего мы просмотрели два файла в нашем дереве Rails-приложения. Мы смотрели на контроллер, и мы изменили шаблон отображения страницы в браузере. Эти файлы находятся в стандартных местах иерархической структуры Rails: контроллеры размещаются в каталоге app/controllers, а представления — в подкаталогах, принадлежащих каталогу app/views.

Стандартные места для контроллеров и представлений показаны на рисунке 1.24

Рисунок 1.24 – Места для контролеров и представлений

В Rails есть множество способов создания динамических шаблонов. Наиболее распространенный из них, заключается во вставке кода Ruby непосредственно в шаблон. Именно поэтому наш файл шаблона называется hello.html.erb — суффикс .html.erb предписывает Rails расширить содержимоефайла с помощью системы, которая называется ERB.

ERB — это фильтр, устанавливаемый как часть Rails, который берет файл.erb и выдает преобразованную версию. Выходной файл в Rails чаще всего имеет формат HTML. Обычно содержимое пропускается через фильтр без изменений. А содержимое, находящееся между группами символов <%= и %>, интерпретируется как Ruby-код, который выполняется. В результате этого выполнения содержимое превращается в строку, значение которой подставляется в файл вместо последовательности <%=…%>

Примечание:

Если не удалось запустить вышеописанный элемент приложения, то попробуйте удалить содержимое, находящееся между группами символов <%= и %>, интерпретирующееся как выполняемый Ruby-код, который сгенерировал сам Rails.

Вернемся теперь в редактор SublimeText и в файле hello.html.erbпо каталожному месторасположению app/views/say/hello.html.erb сделаем так же как представлено на рисунке ниже.

Рисунок 1.25 – Необходимый код для придания шаблону показателей текущего времени

Сохраняем изменения и возвращаемся в браузер и проверяем результат.

Рисунок 1.26 – Проверка результата вывода текущего времени в шаблон.

Правильнее сделать немного более красиво. Переместим определение отображаемого значения текущего времени в контроллер, а представлению оставим простую работу по его отображению.

Для этого мы изменим метод действия в контроллере, чтобы присвоить значение времени переменной экземпляра под названием @time:

Перейдем на app/controllers/say_controller.rb,и подгоним наш текст аналогично тексту рисунка 1.27.

Рисунок 1.27 – Текст кода

В шаблоне.html.erb мы воспользуемся этой переменной экземпляра, чтобы подставить время в выводимые данные:

app/views/say/hello.html.erb

Рисунок 1.28 – Запись переменной

После обновления окна браузера мы опять увидим текущее время, что свидетельствует об успешной связи между контроллером и представлением.

Рисунок 1.29 – Проверка работоспособности

Теперь в нашем редактореSublimeText2 перейдем по пути app/views/say/goodbye.html.erb

И пропишем следующий код:

<h1>До свидания!</h1>

<p>

Очень приятно, что вы нас навестили.

</p>

Обратимся еще раз к нашему уже испытанному браузеру, но теперь уже укажем на новое действие, воспользовавшись URL http://localhost:3000/say/goodbye. Должна появиться картинка, похожая на рисунок 1.30:

Рисунок 1.30 – Проверка работы шаблона goodbye.html

Теперь нам нужно связать эти две страницы. Мы поместим на страницу hello ссылку, которая приведет нас на страницу goodbye, и наоборот. В настоящем приложении для этого, скорее всего, понадобится создать соответствующие кнопки, но сейчас мы воспользуемся простыми гиперссылками (рисунки 1.31 и 1.32).

Рисунок 1.31. – Настройка гиперссылок в файле hello

Рисунок 1.32 - Настройка гиперссылок в файле goodbye

Теперь проверим, как это работает в браузере (рисунки 1.33 и 1.34).

Рисунок 1.33 – Страница Привет

Рисунок 1.34 – Страница с гиперссылкой на Привет от Rails

Конечно, все это будет работать, но сам по себе этот код слишком несовершенен. Если придется перемещать наше приложение в другое место на веб-сервере, URL-адреса уже не будут указывать на правильное место.

К тому же в наш код также закладываются предположения об используемом в Rails формате URL-адреса, который в будущих версиях Rails может измениться.

К счастью, мы можем обойтись без всякого риска Rails поставляется с целым пакетом вспомогательных методов, которые могут использоваться в шаблонах представлений. В данном случае мы воспользуемся вспомогательным методом link_to(), создающим гиперссылку на действие (Метод link_to() способен на большее, но пока ограничимся только этой возможностью ) При использовании link_to(), hello.html.erb приобретает следующий вид:

Рисунок 1.35 – Модернизация кода приложения

Теперь проверим, как это работает в браузере (рисунки 1.36).

Рисунок 1.36 - Проверка измененного кода

Соответствующие изменения могут быть сделаны и в файле goodbye.html.erb, чтобы появилась ссылка на начальную страницу hello:

Рисунок 1.37 – Изменения страницы До свидания

Теперь проверим, как это работает в браузере (рисунки 1.38).

Рисунок 1.38 – Результат изменения страницы goodbye

Вот мы и завершили разработку нашего пробного проекта, проверив тем самым работоспособность нашей установки Rails.

В следующих разделах мы приступим к созданию более сложного приложения (ИС «Сотрудники»), которое будет работать с базой данных PostgreSQL.