Чтобы освоить Guard и получить идеальную настройку для ваших проектов и собственных нужд, вам нужно изменить Guardfile
и настроить наблюдатели соответственно. Шаблоны, которые поставляются с каждым плагином Guard, стараются соответствовать наиболее полезному поведению для большинства пользователей, которое может отличаться от ваших личных предпочтений.
Каждый плагин Guard начинается с guard
метода DSL, за которым следует хэш параметров для настройки плагина Guard. Параметры часто различаются для разных подключаемых модулей Guard, и для получения дополнительной информации необходимо обратиться к подключаемому модулю README.
Между guard
блоком do ... end
вы обычно настраиваете своих наблюдателей. Наблюдатель должен быть определен с помощью RegExp, описывающего файлы быть под наблюдением. Я использую Rubular для тестирования моих наблюдателей, и вы можете вставить свои текущие функции, скопированные из вывода из find features
, чтобы иметь реальные файлы для тестирования ваш RegExp.
Линия
watch(%r{features/.+\.feature})
например, отслеживает все файлы в папке features
, которая заканчивается на .feature
. Поскольку наблюдателю не предоставляется блок, соответствующий файл передается без изменений в Guard :: Cucumber для запуска.
Наблюдатель
watch(%r{features/support/.+}) { 'features' }
соответствует всем файлам в каталоге features/support
, и поскольку блок всегда возвращает features
, каждый раз, когда файл в каталоге поддержки изменяется, features
передается в Guard :: Cucumber, и, таким образом, все функции выполняются.
Последняя строка
watch(%r{features/step_definitions/(.+)_steps\.rb}) do |m|
Dir[File.join("**/#{m[1]}.feature")][0] || 'features'
end
отслеживает каждый файл, который заканчивается на _steps.rb
в каталоге features/step_definitions
, и пытается сопоставить функцию для определения шага. Обратите внимание на круглые скобки в RegExp features/step_definitions/(.+)_steps\.rb
. Это определяет группу соответствия, которая будет доступна позже в вашем блоке наблюдателя. Например, определение шага features/step_definitions/user_steps.rb
будет соответствовать, а первая группа совпадений (m[1]
) будет содержать значение user
.
Теперь мы пытаемся найти подходящее файл во всех подкаталогах (**
) с именем user.feature
. В этом случае запустите первый соответствующий файл ([0]
) или, если вы ничего не нашли, запустите все features
.
Похоже, вы назвали свои шаги иначе, чем ожидает Guard :: Cucucmber Guardfile по умолчанию, и это совершенно нормально. Просто измените наблюдателя в соответствии с вашим соглашением об именах.
person
Netzpirat
schedule
28.06.2012