Лаб 5_RubyOnRails (Лабораторный практикум)
Описание файла
Файл "Лаб 5_RubyOnRails" внутри архива находится в папке "Лабораторный практикум". PDF-файл из архива "Лабораторный практикум", который расположен в категории "". Всё это находится в предмете "языки интернет-программирования" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "языки интернет-программирования" в общих файлах.
Просмотр PDF-файла онлайн
Текст из PDF
Методические указания к выполнениюлабораторной работы 5.Введение в Ruby on Rails.Самарев Роман Станиславовичканд. техн. наук, доцентsamarev@acm.orgкаф. ИУ-6 «Компьютерные системы и сети»МГТУ им. Н.Э. БауманаМосква 2013ОглавлениеЦель работы ................................................................................................................. 3Принципы построения Ruby on Rails приложения .................................................. 4Размещение файлов.................................................................................................
5Исследование Rails-приложения ........................................................................... 9Настройка приложения ............................................................................................. 20Bundler ....................................................................................................................
20Конфигурационные параметры ........................................................................... 21Формы. Передача данных. ....................................................................................... 24Пример приложения с формой ............................................................................ 24Пояснения к примеру ............................................................................................
25Функциональные тесты контроллеров.................................................................... 30Контрольные вопросы .............................................................................................. 32Задание на лабораторную работу ............................................................................ 33Литература ................................................................................................................. 342Цель работыЦелью работы является получение теоретических сведений о принципахпроектирования Model-View-Controller и получении практических навыковсоздания веб-приложения с использованием средств Ruby on Rails, созданияпростейших форм и выполнения вычислений со стороны серверной частиприложения.3Принципы построения Ruby on Rails приложенияИдеология Ruby on Rails реализует концепцию Model-View-Controller (MVC) –модель-представление-контроллер.
Принято считать, что MVC была описана в1979 году Трюгве Реенскаугом (англ. Trygve Reenskaug), работавшим тогда надязыком программирования Smalltalk в Xerox PARC.В данной концепции модель ответственна за сохранение состоянияприложения. В некоторых случаях состояния являются переходными,единственное назначение которых – связать взаимодействия с пользователем. Вдругих случаях состояния постоянные и сохраняются вне приложения,например в СУБД.Модель (Model) является больше чем набором данных.
Она включает правила,которые налагаются на данные. Например скидка не может быть предоставленана заказы дешевле 1000 руб, тогда модель должна содержать это ограничение.Таким образом, задачей модели является обеспечить целостность данныхпосредством применения определенных правил.Представления (View) ответственны за формирование интерфейсапользователя, основанного на данных из модели. Например сайт магазинаимеет список продуктов, отображаемых на экране.
Этот список будет полученчерез модель, однако именно представление получит список у модели ипредоставит в соответствующем формате отображения конечномупользователю. Также представление может предоставлять пользователюразличные способы ввода данных, но никогда не занимается их обработкой.Представления завершает работу как только данные отображены пользователюВозможна ситуация, когда несколько представлений предоставляют доступ кодним и тем же данным, но с разными целями.
Например в интернет-магазинетовары должны отображаться по-разному в зависимости от того, зашел липользователь для оформления заказа или администратор для редактированиятоваров.Контроллеры (Controller) связывают отдельные элементы приложения.Контроллеры получают события из внешнего мира (например командыпользователя), взаимодействуют с моделями и активируют соответствующеепредставление для пользователя.На рисунке 1 представлена описанная схема взаимодействия.41КонтроллерПредставление243Браузер1.Браузеротправляетзапрос2.Контроллервзаимодействуетсмоделью3.Контроллерподключаетпредставление4.СредствамиотображенияформируетсяноваястраницадлябраузераМодельСУБДРисунок 1 Концепция MVCRuby on Rails также представляет собой MVC-фреймворк. Rails задаётструктуру будущего приложения, а именно модели, представления иконтроллеры как кубики функциональности, которые будут связаны вместе вмомент запуска приложения.
Отметим, что на данный момент используетсяуже 4-е поколение Rails. Примеры, рассматриваемые в данном пособии,разработаны с использованием Rails 4.0.Для работы Rails-приложения необходимо иметь ruby, а также ряднеобходимых модулей, которые могут быть установлены командойgem install rails.Размещение файловРассмотрим создание простейшего приложения. Rail имеет средства дляавтоматической генерации базовой структуры приложения. Для того, чтобысоздать каркас приложения необходимо в консоли перейти в директорию, вкоторой должно быть размещено приложение и выполнить командуrails new test_appБудет создана директория с именем test_app, в которой и будет созданаструктура приложения.
Во время создания приложения в консоль будутвыданы примерно ниже приводимые сообщения. По ходу вывода будемиллюстрировать что это означаетСоздание приложения:createСоздание шаблона краткой информации о приложении:createREADME.rdocСоздание файла для системы сборки Rake (аналог make для Ruby):createRakefile5Вспомогательные файлы:createcreateconfig.ru.gitignoreФайл, который содержит описание необходимых приложению gem-пакетов.createGemfileСоздание основного каркаса – контроллеры, представления, модели, хелперы,шаблоны типового отображения.createcreatecreatecreatecreatecreatecreatecreatecreatecreatecreateappapp/assets/images/rails.pngapp/assets/javascripts/application.jsapp/assets/stylesheets/application.cssapp/controllers/application_controller.rbapp/helpers/application_helper.rbapp/mailersapp/modelsapp/views/layouts/application.html.erbapp/mailers/.gitkeepapp/models/.gitkeepСоздание конфигурационной части приложения, которая включаетмаршрутизацию, настройки запуска, локали.createcreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreatecreateconfigconfig/routes.rbconfig/application.rbconfig/environment.rbconfig/environmentsconfig/environments/development.rbconfig/environments/production.rbconfig/environments/test.rbconfig/initializersconfig/initializers/backtrace_silencers.rbconfig/initializers/inflections.rbconfig/initializers/mime_types.rbconfig/initializers/secret_token.rbconfig/initializers/session_store.rbconfig/initializers/wrap_parameters.rbconfig/localesconfig/locales/en.ymlconfig/boot.rbconfig/database.ymlСоздание директории для базы данных:createcreatedbdb/seeds.rbДиректория для будущей документации:createcreatedocdoc/README_FOR_APPСоздание директорий для библиотек функций:createcreatecreatecreatecreateliblib/taskslib/tasks/.gitkeeplib/assetslib/assets/.gitkeepДиректория для журналов выполнения приложения:6createcreateloglog/.gitkeepДиректория для общедоступных статических файлов:createcreatecreatecreatecreatecreatecreatepublicpublic/404.htmlpublic/422.htmlpublic/500.htmlpublic/favicon.icopublic/index.htmlpublic/robots.txtДиректория служебных скриптов Rails:createcreatescriptscript/railsДиректория тестов приложения:createcreatecreatecreatecreatecreatecreatecreatecreatecreatetest/fixturestest/fixtures/.gitkeeptest/functionaltest/functional/.gitkeeptest/integrationtest/integration/.gitkeeptest/unittest/unit/.gitkeeptest/performance/browsing_test.rbtest/test_helper.rbВременная директория для служебных целей.
Она же для хранения кэша.createcreatetmp/cachetmp/cache/assetsДиректории для размещения дополнительных модулей:createcreatecreatecreatecreatecreatevendor/assets/javascriptsvendor/assets/javascripts/.gitkeepvendor/assets/stylesheetsvendor/assets/stylesheets/.gitkeepvendor/pluginsvendor/plugins/.gitkeepДалее run bundle install запускает специальный менеджер пакетов bundle,который проверяет состав имеющихся gem-пакетов и устанавливаетнепосредственно с указанного в файле Gemfile сайта все необходимые пакеты.Приведём лишь небольшой фрагмент этого вывода.…Using sprockets (2.10.0)Using sprockets-rails (2.0.0)Using rails (4.0.0)Using rdoc (3.12.2)Installing sass (3.2.10)Installing sass-rails (4.0.0)Installing sdoc (0.3.20)…Your bundle is complete! Use `bundle show [gemname]` to see where a bundled gemis installed.В минимальном виде каркас приложения создан.
Теперь перейдём вдиректорию приложения и запустим приложение командой rails server (или railss).7Получим примерно следующее сообщение:=> Booting WEBrick=> Rails 4.0.0 application starting in development on http://0.0.0.0:3000=> Run `rails server -h` for more startup options=> Ctrl-C to shutdown server[2013-08-20 11:54:14] INFO WEBrick 1.3.1[2013-08-20 11:54:14] INFO ruby 2.0.0 (2013-06-27) [i386-mingw32][2013-08-20 11:54:14] INFO WEBrick::HTTPServer#start: pid=2980 port=3000WEBrick – отладочный веб-сервер, который встроен в Rails и предназначентолько для однопользовательской работы с целью отладки! В отличии от вебсерверов, предназначенных для эксплуатации приложений, этот веб-серверпозволяет вносить изменения в код приложения и видеть изменения без егоперезапуска.В сообщении, выданном на экран также указаны версии Rails, Ruby, а такжестрока http://0.0.0.0:3000.
Эта строка означает, что веб-сервер присоединился нафиктивный интерфейс 0.0.0.0, означающий готовность принимать запросы,поступающие со всех имеющихся сетевых адаптеров, а значение :3000 – ipпорт. Откроем браузер и введём адрес http://localhost:3000. Получим сообщениеследующего вида (рисунок 2).Рисунок 2 Страница по умолчанию http://localhost:3000/Данная страница является страницей по умолчанию public/index.html (для Rails3.2 и ранее), сгенерирована в момент создания приложения. В дальнейшем онадолжна быть удалена или заменена. В Rails 4 эта страница входит в составвнешних gem-модулей, поэтому единственный вариант замены — изменениекорневого маршрута с помощью метода root в файле config/routes.rb.В то же время в консоли, в которой запущен WEBrick увидим примерноследующий текст:Started GET "/assets/rails.png" for 127.0.0.1 at 2013-08-20 19:48:39 +0400Connecting to database specified by database.ymlServed asset /rails.png - 200 OK (15ms)8Из этого текста следует, что к серверу обратились с локального адреса 127.0.0.1и запросили методом GET изображение "/assets/rails.png".