【Ruby on Rails Tutorial】3章のテストでエラー
Ruby on Rails Tutorial 3章の「3.3.1 最初のテスト」をやってみたらエラーが起きて、ライアーゲームのBGMが脳内で流れると共に膝から崩れ落ちて就寝した。
あと本記事のコード中ではUser名が丸見えであるが、Qiitaで使っている名前と同じなので大丈夫だろう。そうだろう?
目次
どういうエラー?
以下のようなエラーが発生。
ターミナル
PS C:\Users\right\Desktop\Web\Ruby\rails_tutorial\sample_app> rails test
Run options: --seed 4233
# Running:
E
Error:
StaticPagesControllerTest#test_should_get_help:
ActionView::Template::Error: Permission denied @ rb_file_s_rename - (C:/661900.45188.508323, C:/Users/right/Desktop/Web/Ruby/rails_tutorial/sample_app/tmp/cache/assets/sprockets/v4.0.0/jm/jmKa6krLovmtBf-DxAwKf051KFbzekTxfeLnbW5-3lU.cache)
app/views/layouts/application.html.erb:9
test/controllers/static_pages_controller_test.rb:10:in `block in <class:StaticPagesControllerTest>'
rails test test/controllers/static_pages_controller_test.rb:9
.
Finished in 7.447825s, 0.2685 runs/s, 0.1343 assertions/s.
2 runs, 1 assertions, 0 failures, 1 errors, 0 skips
エラー文を読み解いてみる。とかそういったことはこの記事では面倒なのでしない。
いや実際に自分はやったが昨日のことなので忘れた。投稿者の脳みそは揮発性メモリなのだ。
具体的にやって解決した方法だけ書く。
解決法は?
まず悪さをしていたのは以下の「これを直すんや」の部分である。
ちなみに正確に言うと悪いのはこいつではない。
テストコードのテストを1つずつやってみたら、すんなりと成功(GREEN)するのだ。
つまり、悪さをしているのは並行処理を行うことでエラーが起きるRailsの方である。
system>test_helper.rb
ENV['RAILS_ENV'] ||= 'test'
require_relative "../config/environment"
require "rails/test_help"
class ActiveSupport::TestCase
# Run tests in parallel with specified workers
parallelize(workers: :number_of_processors, with: :threads) # ←これを直すんや
# Setup all fixtures in test/fixtures/*.yml for all tests in alphabetical order.
fixtures :all
# Add more helper methods to be used by all tests here...
end
system>test_helper.rb
parallelize(workers: 1) # ←こうするんや
そこのコードの意味は1ミリも知らない。しかし多分並行処理しますよ的なアレだろう。多分知らんけど。
こうしてもう一度テストを実行すると、見事に成功した。ここでワールドカップで優勝した時ぐらいの雄叫びを上げる。
####このエラーを解決するのに3時間かかったからな!!!!!!!!!