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 3 years have passed since last update.

Railsのソース変更がテスト実行に反映されない

Last updated at Posted at 2020-04-18

環境

OS:Windows10
Rails環境:WSL
エディタ&ターミナル:VSCode

Railsのソース変更がテスト実行に反映されない

Railsチュートリアル第3章のわざとテストを失敗させて、徐々に解消していく作業を行っていた時に、ソースコードの変更が反映されず、チュートリアル通りのエラーメッセージが表示されない現象が起きました。

以下のようなエラーから一切変わらなかったので

StaticPagesControllerTest#test_should_get_contact:
NameError: undefined local variable or method `static_pages_contact_url' for #<StaticPagesControllerTest:0x007fffe51b14e8>
    test/controllers/static_pages_controller_test.rb:28:in `block in <class:StaticPagesControllerTest>'

その文言で調べたところ同じような人が・・・
Ruby on Rails チュートリアル3章のテストのバグとその対応メモ

Rails、minitestのバージョンを変更しまくる

私の環境ではチュートリアルよりも新しいバージョンのRailsを使用していたので(6.0.2.2)、まさしくこれかな?と思い
参考に、minitest、Railsのバージョンを変更してみるが・・・ダメ。
いろんなバージョンの組み合わせでもダメ・・・。
Rubyのバージョンも変えてもダメ・・・。
チュートリアルと全く一緒のバージョン、gemファイルの内容にしてもダメ・・・。

キャッシュか?

キャッシュか?と思ってググって

Rails tmp:clear
bin/rails r 'Rails.cache.clear'

等を試してみたがダメ・・・。

しまいにはアプリケーションルート直下のtmpフォルダを無理やり頑張ってコマンド上から全削除してみたがダメ。
というかRailsが動かなくなり、再インストールするハメに・・・。

app/enviroment/test.rbconfig.cache_classesconfig.action_controller.perform_cachingfalseにしてみたが変化なし。

この時点で半日くらい潰れた・・・。

なぜかrails serverでブラウザでアクセスすると、変更は反映されているようでした。

rails s

springが原因の可能性

その後もググりまくっているとspringというものがrailsコマンドの実行を早めるためにキャッシュしているとかなんとか・・・。
たしかにこのspringはgemファイルの中身やrails t実行時のコンソール出力内で見かけたなぁ・・・と思い、こいつを停止させてみることに

bin/spring stop

停止されたか確認するためbin/spring status

test@DESKTOP-SAU5360:~/sample_app$ bin/spring status
Spring is not running.
test@DESKTOP-SAU5360:~/sample_app$

止まっている模様。

この状態からrails tでテスト実行したところ
 
 
 
 
 
 
うまくいきました

解決まで計8時間くらいかかりました。
時間を返して~

私の環境が悪いのかな・・・。
そもそもみんなWSLじゃなくCloud9だから、こんなこと起きないか!?

今後もテストを流す際は毎回これをしなきゃいけないのはめんどいなぁ・・・。もう止めておくか。
gemでtestの時に除外すればいいのか!?

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?