Guard を使いこなし、プロジェクトと独自のニーズに合わせて完璧にセットアップするには、ウォッチャーGuardfile
を適宜変更して構成する必要があります。各 Guard プラグインに付属するテンプレートは、ほとんどのユーザーにとって最も便利な動作に合わせようとしますが、これは個人の好みとは異なる場合があります。
各 Guard プラグインは DSL メソッドで始まりguard
、その後にオプション ハッシュが続き、Guard プラグインを構成します。多くの場合、オプションは Guard プラグインによって異なります。詳細については、プラグインのREADMEを参照する必要があります。
guard
ブロックの間に、do ... end
通常はウォッチャーを構成します。ウォッチャーは、監視対象のファイルを記述するRegExpで定義する必要があります。Rubularを使用してウォッチャーをテストします。出力からコピーした現在の機能を貼り付けて、正規表現をテストfind features
するための実際のファイルを作成できます。
この線
watch(%r{features/.+\.feature})
たとえば、features
で終わるフォルダー内のすべてのファイルを監視します.feature
。ウォッチャーにブロックが提供されないため、一致したファイルは変更されずに Guard::Cucumber に渡されて実行されます。
ウォッチャー
watch(%r{features/support/.+}) { 'features' }
はディレクトリ内のすべてのファイルに一致し、サポート ディレクトリ内のファイルが変更されるたびfeatures/support
にブロックが常に を返すため、Guard::Cucumber に渡され、すべての機能が実行されます。features
features
最後の行
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 が期待するものとは異なる名前をステップに付けたように見えますが、これはまったく問題ありません。命名規則に合わせてウォッチャーを変更するだけです。