За да овладеете 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