Rails - Guardを使い、ファイル変更時にMinitestやRspecを自動実行する
やりたいこと
- ファイル更新時にテストを自動で行う
- 例えば、home.html.erbファイルが変更されたらstatic_pages_controller_test.rbを自動的に実行する
Gemfileの設定
次の2行を追加
group :test do gem 'guard', '2.13.0' gem 'guard-minitest', '2.4.4' end
Rspecの場合は次の通り、
group :test do gem 'guard', gem 'guard-rspec', require: false end
bundleコマンドで初期化
Guardfileを作成する
bundle exec guard init
Rspecの場合は次の通り。rspecの設定が書かれたGuardfileを作成してくれる。
bundle exec guard init rspec
Guardfileで詳細設定
設定をカスタマイズしたい場合はGuardfileを書き換えることでできる。どのように記述するかは下記ページを参照。
公式 docの設定具体例
https://github.com/guard/guard/wiki/Guardfile-examples
公式 docのDSL一覧
https://github.com/guard/guard/wiki/Guardfile-DSL---Configuring-Guard
rails tutorialの設定
https://railstutorial.jp/chapters/static_pages?version=5.1#sec-guard
.gitignoreファイルにspring/ディレクトリを追加
SpringとGitが競合することがあるので、それを防ぐ。.gitignoreファイルに下記の2行を追加する。
# Ignore Spring files. /spring/*.pid
Guradの実行
上記設定が終われば、下記で実行。実行中にコントローラのファイルなどを更新するとテストが自動で実行される。終了したい場合は、Ctrl-Dキー
bundle exec guard
Tips
下記のブログにおいて、Guardでrubocopを自動化するという良さそうな記事を見つけた。
Guardでrubocopを自動化する - SHOYAN BLOG