ガードジェムを使用しています
開発のある時点で、プロジェクト全体ではなく、特定のファイルまたは複数のファイルのみを追跡する必要があります。
特定のファイルを一時的に追跡する便利な方法はありますか?
ガードファイルを変更することでできることは知っていますが、それがきちんとした解決策だとは思いません。
focus: true
実際には、it
たとえばステートメントで使用できます。
Spec ファイル内。
it "needs to focus on this!", focus: true do
#test written here.
end
次に、spec/spec_helper に config オプションを追加する必要があります。
RSpec.configure do |config|
config.treat_symbols_as_metadata_keys_with_true_values = true
config.filter_run :focus => true
config.run_all_when_everything_filtered = true
end
次に、Guard は自動的にフォーカスされたテストを選択し、それのみを実行します。また、config.run_all_when_everything_filtered = true
名前が誤解を招くように聞こえる場合でも、フィルタリングされたものがない場合はすべてのテストを実行するようガードに指示します。
Ryan Bate の rails キャストは、 GuardとSporkで非常に役立つことがわかりました。
おそらくグループはあなたのために働くでしょうか?
# In your Guardfile
group :focus do
guard :ruby do
watch('file_to_focus_on.rb')
end
end
# Run it with
guard -g focus
Guardfile を変更したくないとおっしゃっていたのは承知していますが、グループの追加は、プロジェクトの監視からフォーカス セットに切り替えて戻るたびにではなく、一度だけ行う必要があります。
もちろん、注目する必要があるファイルのセットが変更された場合は、引数を変更する必要がありますwatch
(さらにウォッチャーを追加することもできます)。しかし、どこかに指定する必要があると思います。どれか。
あるいは、Guardfile にフォーカスするファイルを本当にリストしたくない場合は、上記のDavid が提案したように、別のファイルまたは環境変数からファイルのリストで:focusグループを読み取ることができます。Guardfile は単純な ruby (ガード DSL にアクセスできる) であるため、ファイルまたは ENV 変数を簡単に読み取ることができます。
Guard-rspecを使用する場合。あなたはこれを行うことができます。
Guardfileのrspec ブロックを次のように変更します。
guard 'rspec', :cli => ENV['RSPEC_e'].nil? ? "": "-e #{ENV['RSPEC_e']}") do
# ... regular rspec-rails stuff goes here ...
end
ガードを開始します。そして前にRSPEC_eを設定します。そのようです...
RSPEC_e=here guard
その後、何かを変更するたびに、説明に "here" (RSPEC_e で設定) というテキストが含まれるスペックのみが再実行されます。
ガードファイルを永続的に変更して、選択した環境変数をチェックし、存在する場合は異なる動作をすることができます。たとえば、変数ENV['FILE']にアクセスします。FILE=foo.rb
次に、いつでもガードを実行するためのコマンドを前に付けることができます。