fv17の日記

Webエンジニアの備忘用ブログです。主にWeb界隈の技術に関して書いています。

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