Чрезвычайно удобной оказалась возможность работы с несколькими сайтами на базе RoR (по факту на Rack), которую предоставляет утилита Pow.
Вкратце, если у вас достаточно много сайтов разработке, утилита предоставляет хук в DNS зону dev и позволяет обращаться к вашим сайтам по url вида http://myapp.dev , http://myapp2.dev, а также добавляет правило в фаерволе, которое заворачивает обращения к self с порта 80 на внутренний порт утилиты.
Сам Pow состоит из двух частей — DNS responder и проксирующего web server. Реализовано все счастье на Node.js.
Очень интересна реализация зоны .dev, в mac os в каталоге /etc/resolver/ добавляется файл dev такого вида:
nameserver 127.0.0.1 port 20560
что перенаправляет все обращения xxx.dev на соответствующее приложение
Утилита поддерживает работу с RVM, что позволяет упражняться с различными версиями руби.
Для поддержки в rails 2 через Pow можно воспользоваться таким хаком, создаем в корне приложениея config.ru, где прописываем
Деинсталляция также проста:
curl get.pow.cx/uninstall.sh | sh
# Rails.root/config.ru
require "./config/environment"
run ActionController::Dispatcher.new
Утилита что-то наподобие denwer для php.
Для тех ребят, которые увлекаются канбанами, TDD и прочими agile системами разработки следующим шагом является приобщение к BDD.
По-сути Cucumber представляет собой интеграционные тесты при помощи webrat или других высокоуровневых библиотек для эмуляции работы браузера, открывания странц, нажимания на кнопки и кликания по ссылкам.
Теперь с cucumber жить еще проще, рассказывать по-русски можно при помощи тега
@language ru
Типичный сценарий:
# language: ru Функционал: отчеты по времени Чтобы получить понятие о стоимости часа для конкретной компании Я как руководитель Хочу иметь возможность просматривать отчеты по временным затратам на каждую компанию Предыстория: Допустим существует клиент, админ и сотрудник клиента Сценарий: просмотр суммарно затраченного времени за текущий месяц Допустим админ авторизован И открывет страницу отчетов То видит список клиентов с затраченным временем за последний месяц