Лаб 5_RubyOnRails (Лабораторный практикум), страница 3

PDF-файл Лаб 5_RubyOnRails (Лабораторный практикум), страница 3 Языки интернет-программирования (17431): Лабораторная работа - 5 семестрЛаб 5_RubyOnRails (Лабораторный практикум) - PDF, страница 3 (17431) - СтудИзба2017-12-28СтудИзба

Описание файла

Файл "Лаб 5_RubyOnRails" внутри архива находится в папке "Лабораторный практикум". PDF-файл из архива "Лабораторный практикум", который расположен в категории "". Всё это находится в предмете "языки интернет-программирования" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "лабораторные работы", в предмете "языки интернет-программирования" в общих файлах.

Просмотр PDF-файла онлайн

Текст 3 страницы из PDF

Обратите внимание на то, что для вывода списка пользователейформируется таблица. Однако число пользователей неизвестно, поэтому здесьиспользован цикл генерации строк<% @users.each do |user| %><tr>…</tr><% end %>Подстановка имени пользователя и его электронного адреса производится всоответствии с кодом цикла @users.each do |user| строках<td><%= user.name %></td><td><%= user.email %></td>16Обратите внимание также на то, что этот шаблон не содержит всейнеобходимой HTML-разметки. Шаблон отображения страниц приложения былсгенерирован на самом первом этапе генерации rails-приложения и хранится вфайле app/views/layouts/application.html.erb. Его содержимое представленониже:<!DOCTYPE html><html><head><title>TestApp</title><%= stylesheet_link_tag"application", :media => "all" %><%= javascript_include_tag "application" %><%= csrf_meta_tags %></head><body><%= yield %></body></html>Как видим, здесь содержится внешнее обрамление, а вставка конкретныхшаблонов представлений производится вместо строки <%= yield %>.Последнее, что следует посмотреть – сгенерированные тесты.

Отметим, что поумолчанию в Rails генерируются тесты уже устаревшей системы тестированияUnit. Для использования rspec необходимо выполнить дополнительныедействия. Тем не менее, рассмотрим то, что уже предоставлено.Для запуска тестов достаточно запустить в директории rails-приложениякоманду rake. Файл Rakefile содержит цель test в качестве цели по-умолчанию.Дополнительно укажем трассировку вызовов и запустим rake --trace.Получим что-то типа:**********************************************Invoke default (first_time)Invoke test (first_time)Execute testInvoke test:run (first_time)Execute test:runInvoke test:units (first_time)Invoke test:prepare (first_time)Invoke db:test:prepare (first_time)Invoke db:abort_if_pending_migrations (first_time)Invoke environment (first_time)Execute environmentInvoke db:load_config (first_time)Execute db:load_configExecute db:abort_if_pending_migrationsExecute db:test:prepareInvoke db:test:load (first_time)Invoke db:test:purge (first_time)Invoke environmentInvoke db:load_configExecute db:test:purgeExecute db:test:loadInvoke db:test:load_schema (first_time)Invoke db:test:purge17** Execute db:test:load_schema** Invoke db:schema:load (first_time)** Invoke environment** Invoke db:load_config** Execute db:schema:load** Execute test:prepare** Execute test:unitsRun options:# Running tests:Finished tests in 0.000000s, NaN tests/s, NaN assertions/s.0 tests, 0 assertions, 0 failures, 0 errors, 0 skips** Invoke test:functionals (first_time)** Invoke test:prepare** Execute test:functionalsRun options:# Running tests:.......Finished tests in 1.843750s, 3.7966 tests/s, 5.4237 assertions/s.7 tests, 10 assertions, 0 failures, 0 errors, 0 skips** Invoke test:integration (first_time)** Invoke test:prepare** Execute test:integration** Execute defaultКак видим, было запущено 7 тестов.

Принято 10 утверждений. Ошибок 2необнаружено.Большая часть тестов ничего не содержит. Однако имеется сгенерированныйфункциональный test\functional\users_controller_test.rb, который содержитследующий текст:require 'test_helper'class UsersControllerTest < ActionController::TestCasesetup do@user = users(:one)endtest "should get index" doget :indexassert_response :successassert_not_nil assigns(:users)endtest "should get new" doget :newassert_response :successend2Если при прохождении теста обнаружена ошибка доступа к БД, проверьте значение переменнойокружения RAILS_ENV (должно быть development или быть пусто) или сбросьте её значение командой setRAILS_ENV=18test "should create user" doassert_difference('User.count') dopost :create, user: { email: @user.email, name: @user.name }endassert_redirected_to user_path(assigns(:user))endtest "should show user" doget :show, id: @userassert_response :successendtest "should get edit" doget :edit, id: @userassert_response :successendtest "should update user" doput :update, id: @user, user: { email: @user.email, name: @user.name }assert_redirected_to user_path(assigns(:user))endtest "should destroy user" doassert_difference('User.count', -1) dodelete :destroy, id: @userendassert_redirected_to users_pathendendИз приведенного текста видим, что предполагается эмуляции GET, POST, PUT,DELETE-запросов HTTP посредством вызова соответствующих методов,которым передаются URL, позволяющие проверить поведение все маршруты иметоды сгенерированного контроллера.Запуск только функциональных тестов производится командойrake test:functionalsНа этом в исследовании сгенерированного приложения остановимся иперейдем к справочному изложению компонентов Rails.19Настройка приложенияBundlerBundler не является компонентом Rails, однако рекомендован дляиспользования.

Bundle в переводе на русский означает узел, связка, пачка, аосновное назначение этого средства – обеспечить необходимый приложениюнабор пакетов в соответствии с заданным списком. Более того, пакеты должныне только совпадать по названию, но и быть тех же версий, на которыхпроведена разработка и тестирования приложения.Для решения этой задачи существует файл Gemfile. Этот файл генерируетсяавтоматически при создании базовой структуры приложения и имеет примерноследующий вид:source 'http://rubygems.org'gem 'rails', '4.0.0'# Bundle edge Rails instead:# gem 'rails', :git => 'git://github.com/rails/rails.git'gem 'sqlite3'# Gems used only for assets and not required# in production environments by default.group :assets dogem 'sass-rails','~> 4.0.0'gem 'coffee-rails', '~> 4.0.0'# See https://github.com/sstephenson/execjs#readme for more supported runtimes# gem 'therubyracer', :platforms => :rubygem 'uglifier', '>= 1.0.3'endПараметр source указывает на адрес репозитория пакетов.

Обычно 'http://rubygems.org'. В некоторых случаях может указывать на'http://rubygems.org'. Считается, что использование протокола https можетповысить уровень достоверности скачиваемых пакетов, посколькусертификаты шифрования, используемые в этом протоколе, должны бытьофициально подписаны.Параметр gem указывает на имя gem-пакета, который необходимоприложению. Возможные формы:Необходима любая версия пакета:gem 'sqlite3'Необходима только версия пакета '4.0.0':gem 'rails', '4.0.0'Необходима версия пакета не раньше '4.0.0':20gem 'rails', '>=4.0.0'Необходима версия пакета не раньше '>=3.2.8', но менее '<3.3.0':gem 'rails', '~>3.2.8'Взять пакет не из source, а из указанного репозитория.gem 'rails', :git => 'git://github.com/rails/rails.git'Взять пакет из указанного репозитория, но с явным указанием ветви:gem 'rails', :git => 'git://github.com/rails/rails.git',:branch => '2-3-stable'Группы пакетов позволяют указать состав пакетов, необходимых дляопределенных конфигураций: test, development, production.

Посколькупользователи приложения не будут заниматься разработкой, то им не нужныпакеты, которые относятся к конфигурации test или development.groupgemendgroupgemend:test do"rspec":development, :test do"ruby-debug"По умолчанию команда bundle install установит все пакеты, которые указаны вGemfile.

Если необходимо установить только в указанной конфигурации,необходимо применить параметр –without. Например:bundle install --without development testbundle install --without testПосле выполнения команды bundle install в директории приложения создаётсяфайл Gemfile.lock, который содержит список конкретных пакетов с указанияминомеров версий и всеми зависимостями, которые были на момент выполненияbundle install. При переносе приложения на другой сервер это файлгарантирует, что состав пакетов будет таким же.Для того, чтобы собрать все пакеты вместе с приложением достаточновыполнить команду bundle package.

В директорию vendor/cache/ будутпомещены все пакеты в формате gem, от которых зависит приложение.Конфигурационные параметрыКонфигурационные файлы приложения содержатся в директории config.Коротко рассмотрим основные моменты3.В процессе запуска приложения подключаются три файла: config/boot.rb – устанавливает путь к Gemfile и запускает bundle/setup3См. главу Rails Environments and Configuration [fernandez]21 config/application.rb – загружает все gem-пакеты rails, а также пакеты длятекущей конфигурации приложения, установленной в переменнойRail.env; config/environment.rb – запускает все модули инициализации и самоприложение.Файл application.rb содержит настройки, применимые к приложению,независимо от конфигурации. По-умолчанию этот файл имеет следующий вид:module TestApp # это имя, указанное при создании приложения!class Application < Rails::Application# Settings in config/environments/* take precedence over those specified here.# Application configuration should go into files in config/initializers# -- all .rb files in that directory are automatically loaded.# Custom directories with classes and modules you want to be autoloadable.# config.autoload_paths += %W(#{config.root}/extras)# Only load the plugins named here, in the order given (default is alphabetical).# :all can be used as a placeholder for all plugins not explicitly named.# config.plugins = [ :exception_notification, :ssl_requirement, :all ]# Activate observers that should always be running.# config.active_record.observers = :cacher, :garbage_collector, :forum_observer# Set Time.zone default to the specified zone and make Active Record auto-convert to this zone.# Run "rake -D time" for a list of tasks for finding time zone names.

Свежие статьи
Популярно сейчас
Как Вы думаете, сколько людей до Вас делали точно такое же задание? 99% студентов выполняют точно такие же задания, как и их предшественники год назад. Найдите нужный учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
5168
Авторов
на СтудИзбе
438
Средний доход
с одного платного файла
Обучение Подробнее