0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

Guardの自動テストがRunningのまま動かない【Windows・Railsチュートリアル3章】

Posted at

Cloud9使わずローカル環境で実施していたせいか、チュートリアルに記載の通りに行ってもGuardがうまく動かなかった。
解決策をメモしておく。

概要

下記リンク、「3.6.2 Guardによるテストの自動化」に記載されているGuardの初期化、Guardfileの編集を行ったものの、自動テストが完了しなかった。
https://railstutorial.jp/chapters/static_pages?version=6.0#sec-guard

こんな感じで Running: ~ のあと [1] guard(main)> と出たまま動かない。

00:52:47 - INFO - Running: test/controllers/static_pages_controller_test.rb
[1] guard(main)>

待っていれば結果が出てくるのかな?と思ったが、いつまで経っても何も起こらなかった。

念のため spring stop コマンドも実行したが、

Spring is not running

と言われるだけで、再度 bundle exec guard からやり直してみても状況は変わらずだった。

環境

OS:Windows10
Railsチュートリアルの版:第6版
コマンドはVSCodeのターミナル(powershell)で実行。

解決策

単にspringのパス違いだった。

サンプルからコピペしてきたGuardfileの2行目の
spring: "bin/rails test",

spring: "rails test",
に変えるだけで動くようになった。

修正前
# Guardのマッチング規則を定義
guard :minitest, spring: "bin/rails test", all_on_start: false do
  watch(%r{^test/(.*)/?(.*)_test\.rb$})
修正後
# Guardのマッチング規則を定義
guard :minitest, spring: "rails test", all_on_start: false do
  watch(%r{^test/(.*)/?(.*)_test\.rb$})

spring stop する前に bin/spring stop したときはエラーメッセージが出たのでパス違いだとすぐ気づけたけど、Guardさんはエラー情報を出してくれなかったから気づくまで時間がかかった。
今後もWindowsで開発していくにあたり、この手のパス違いの問題はよく出てきそうだから留意したい。

そもそも spring って何なんだ

Spring は Rails アプリケーションの preloader(プリローダー)の gem です。Rails アプリケーションをバックグラウンドで走らせたままにしておくことにより(pre + load = 前もってロードしておく)、bin/rails や bin/rake コマンドの2回目以降の起動時間が短縮されます。

とのこと。

spring stopしたときSpring is not runningって言われちゃったけど、これってちゃんとSpringが使えていないということなんだろうか……。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?