# coding: utf-8

Глава 3 В основном статические страницы

В этой главе мы начнем разработку примера приложения, которое будет служить нам образцом в остальной части этого учебника. Хотя в примере приложения, в конечном счете будут пользователи, сообщения и полная система входа и аутентификации, мы начнем с, казалось бы, ограниченной темы: создание статических страниц. Несмотря на свою кажущуюся простоту, создание статических страниц весьма поучительное упражнение — идеальное начало для нашего зарождающегося приложения.

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

Как и в Главе 2, перед началом работы нам необходимо создать новый проект Rails, который в этот раз назовем sample_app:

  $ cd ~/rails_projects
  $ rails new sample_app -T
  $ cd sample_app

Здесь -T дополнение к rails команде говорит Rails не создавать test директорию, связанную с Test::Unit платформой. Это не потому что мы не хотим писать тесты; наоборот, начиная с Раздела 3.2 мы будем использовать альтернативную платформу тестирования, называемую RSpec для написания основательного набора тестов.

Как и в Разделе 2.1, нашим следующим шагом будет использование текстового редактора для дополнения Gemfile гемами, необходимыми нашему приложению. (Напомню, что, в зависимости от Вашей системы, Вам может потребоваться 1.2.5 версия sqlite3-ruby гема.) Также, для примера приложения нам понадобятся два гема, в которых мы ранее не нуждались: гем для RSpec и гем для RSpec библиотеки. Код для их включения показан в Листинге 3.1. (Примечание: если вы хотите установить все гемы, необходимые для примера приложения, вам следует использовать код из Листинга 10.42.)

Листинг 3.1. Gemfile для sample app.

  source 'http://rubygems.org'

  gem 'rails', '3.0.7'
  gem 'sqlite3-ruby', '1.3.2', :require => 'sqlite3'

  group :development do
    gem 'rspec-rails', '2.5.0'
  end

  group :test do
    gem 'rspec', '2.5.0'
    gem 'webrat', '0.7.1'
  end

Это включает rspec-rails в development, чтобы у нас был доступ к RSpec-специфичным генераторам, и это включает rspec в test, для запуска тестов. (Мы также включаем gem для Webrat, утилиты тестирования, ранее устанавливавшейся как зависимость, которая теперь должна быть явно прописанной.) Чтобы установить и включить RSpec гемы, мы, как обычно, используем bundle install:

  $ bundle install

Чтобы заставить Rails использовать RSpec вместо Test::Unit, мы должны установить файлы, необходимые RSpec. Это может быть выполнено с rails generate:

  $ rails generate rspec:install

Все что нам осталось — инициализировать Git репозитарий:1

  $ git init
  $ git add .
  $ git commit -m "Initial commit"

Как и с первым приложением, я советую обновить README файл (находится в корневой директории приложения) чтобы сделать его более полезным и описательным, как показано в Листинге 3.2.

Листинг 3.2. Улучшенный README файл для sample app.
  # Учебник Ruby on Rails: пример приложения
  Это пример приложения для
  [*Учебник Ruby on Rails: Изучаем Rails на Примерах*](https://railstutorial.org/)
  by [Michael Hartl](http://michaelhartl.com/).

Затем изменим его расширение на markdown и зафиксируем изменения:

  $ git mv README README.markdown
  $ git commit -a -m "Improved the README"
Рисунок 3.1: Создание sample app репозитария в GitHub.

Рисунок 3.1: Создание sample app репозитария в GitHub.

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

  $ git remote add origin [email protected]:<username>/sample_app.git
  $ git push origin master

(Отмечу, что в результате этого шага, репозитарий в https://github.com/railstutorial/sample_app содержит исходный код законченного примера приложения. Можете обращаться к нему за консультациями, с двумя предостережениями: (1) Вы узнаете намного больше, если наберете исходный код приложения самостоятельно, нежели полагаясь на законченную версию; (2) Код в книге может немного отличаться от кода в репозитарии GitHub. Что связано с тем, что код из репозитария использовался для создания Rails Tutorial screencasts, в которые включены дополнительные тесты.)

Конечно, можно дополнительно развернуть приложение на Heroku даже на этом раннем этапе:

  $ heroku create
  $ git push heroku master

(Если это не работает у Вас, см. примечание для Листинга 1.8 для возможного исправления ошибки.) В процессе изучения книги я рекомендую регулярно отправлять и разворачивать приложение:

  $ git push
  $ git push heroku

Теперь, мы готовы начать разработку примера приложения.

# coding: utf-8