【Ruby on Rails Tutorial】6章のテストでエラー
Ruby on Rails Tutorial 6章の「リスト 6.10」を実行。
すると、あるエラーが発生した。
その後はいつも通りライアーゲームのBGMが脳内で流れると共に膝から崩れ落ちて就寝。
次の日の朝「直すか……」
目次
どういうエラー?
以下のようなエラーが発生。
ターミナル
PS C:\Users\(ユーザー名)\Desktop\Web\Ruby\rails_tutorial\sample_app2> rails test:models
ansi: 'gem install win32console' to use color on Windows
LoadError: UNIXServer is required
per.rb:9:in `<class:TestCase>'
C:/Users/(ユーザー名)/Desktop/Web/Ruby/rails_tutorial/sample_app2/test/test_helper.rb:7:in `<top (required)>'
C:/Users/(ユーザー名)/Desktop/Web/Ruby/rails_tutorial/sample_app2/test/models/user_test.rb:1:in `<top (required)>'
bin/rails:4:in `require'
bin/rails:4:in `<main>'
Tasks: TOP => test:models
(See full trace by running task with --trace)
エラー文を読み解いてみる→それで頑張ってググるなどした。しかし、そのように出てきた情報で解決したわけではない。
なんか前にも似たようなことがあった気がすると考え、それをやってみたら直った。それを記す。
解決法は?
まず悪さをしていたのは以下の「これを直すんや」の部分である。
ちなみに正確に言うと悪いのはこいつではない。
テストコードのテストを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) # ←こうするんや
すると
PS C:\Users\(ユーザー名)\Desktop\Web\Ruby\rails_tutorial\sample_app2> rails test:models
Started with run options --seed 34075
/0: [=---=---=---=---=---=---=---=---=---=-] 0% Time: 00:00:00, ETA:
2/0: [ ] 0% Time: 00:00:00, ETA:
2/1: [================== ] 50% Time: 00:00:00, ETA:
2/2: [===================================] 100% Time: 00:00:00, Time:
00:00:00
Finished in 0.23506s
2 tests, 2 assertions, 0 failures, 0 errors, 0 skips
テスト成功。