Rails, state_machine, Rspec, capybara, factory_girl, spork и другое. Часть I.
Решил я, так сказать, ломать свой стереотип разработки. В жизни никогда не писал тестов. А всё прогрессивное человечество пишет. Даже понапридумывало всякие сокращения: TDD, BDD и т.п. Я не собираюсь относить к какой-то категории всё то, что напишу в данном цикле статей. Я просто буду учиться писать тесты. Может кто-то будет учиться вместе со мной (-:
Статей будет несколько. Так что любой желающий сможет всё написанное мной повторить у себя на машине. В этой части я опишу, как настроить среду для запуска тестов, как создать каркас нашего будущего приложения. Ну не буду толочь воду в ступе, приступим.
1. Создадим новый проект:
$ rails new state_machine31
Я его так назвал, так как хотел поиграться со state_machine и на Rails 3.1. Так что вот такое не замысловатое название проекта (-:
$ cd ./state_machine31
2. Вносим изменения в наш Gemfile:
gem ‘state_machine’
gem ‘ruby-graphviz’, :require => ‘graphviz’ # Optional: only required for graphing
gem ‘therubyracer’
gem «rspec-rails», :group => [:test, :development]
group :test do
# Pretty printed test output
gem ‘turn’, :require => false
gem «factory_girl_rails»
gem «capybara»
gem «guard-rspec»
gem «spork»
end
3. Неизменное, после изменения Gemfile:
$ bundle install
4. Запускаем установку Rspec:
$ rails g rspec:install
create .rspec
create spec
create spec/spec_helper.rb
5. В spec_helper.rb вносим такие изменения, всё исключительно на основании рекомендаций разработчиков:
добавляем: require ‘capybara/rspec’
убираем: config.fixture_path = «#{::Rails.root}/spec/fixtures»
6. Теперь давайте сделаем каркас нашего приложения, с которым и будем работать:
$ rails generate scaffold User name:string email:string password:string state:string
В данном случае просто создаётся всё необходимое, для управление простенькой базой пользователей. Информация о пользователе будет состоять из его имени (name), адреса электронной почты (email), пароля(password) и поля состояния(state). Последнее поле state нам необходимо для работы со state_machine, для элементарных функций. У пользователя может быть только 3 состояния: только что созданный(new), активированный (active) и заблокированный(blocked).
7. Самое время запустить настройку guard. Эта консольная утилита следит за изменениями в наших файлах и автоматически запускает соответствующие тесты. Вы полюбите её (-:
$ guard init rspec
Будет создан файл Guardfile в корневой директории нашего приложения.
8. Запускаем первый раз наш guard:
$ guard
Please install rb-inotify gem for Linux inotify support
Using polling (Please help us to support your system better than that.)
Guard is now watching at ‘/home/none/rails/state_machine31′
Guard::RSpec is running, with RSpec 2!
Running all specs
Не тут-то было. Никаких тебе всплывающих подсказок, только куча провальных тестов (-:
9. Добавляем в Gemfile
gem ‘rb-inotify’
gem ‘libnotify’
Затем опять:
$ bundle install
10. Опять запускаем guard, опять видим кучу провальных тестов, но уже с левой стороны всплывающие окошки с указанием, сколько тестов вообще, сколько провальных, сколько понадобилось времени и всё такое. Красота!
В следующий раз я расскажу, как настроить spork, factory_girl и т.п.
Если всё написать за раз — это будет слишком длинное полотно, никто не осилит (-:
Недавние записи
- Long time no see
- Ошибка при обновлении Meteor до версии 1.4.2
- Patch falcon для ruby-1.9.3-p327
- Ускоряем ruby и Rails
- Gem ‘seo_params’: определение основных параметров
- Отрицательный margin-top и Opera
- Rspec and Devise reset password
- Backbone.js: Views. Часть первая.
- Backbone.js: Models and Collections
- Backbone.js Routers