1
0

More than 3 years have passed since last update.

Railsチュートリアル3章でテストがうまくいかない(Rubyのバージョンに注意)

Posted at

タイトルの通りのエラーが発生し、ググってもなかなか解決しなかったので、他の人も同様の問題を抱えた際に参考にできればいいなと思ったので備忘として記事に残します。

困ったこと

railsチュートリアル3章で$ rails generate controller StaticPages home help
実行後、testの中身を変えずにtestしたところ 以下のエラーが表示されテスト自体ができない

$rails t
/Users/kiyomasa/.rbenv/versions/3.0.0/lib/ruby/gems/3.0.0/gems/capybara-3.23.0/lib/capybara/selector/filters/node_filter.rb:9:in 
`initialize': wrong number of arguments (given 4, expected 3) (ArgumentError)
      #以下略

結論 

Rubyのバージョンが3.0.0で行ってましたが、Capybaraはバージョン3.31.0ではruby3.0.0では動かなくなる(記事執筆時点)
なので 
+ capybaraのバージョンを対応したものに上げるか
+ Rubyのバージョンを下げるか 
で対応する

自分の場合、capybara公式 で最新のgemをインストールしてやってみたが現状変わらなかったため、
以下記事を参考にRubyのバージョンを2.7.2へ下げたところ、うまくいった
(他のgemfileのバージョンコンフリクトも発生しなくなった)

※質問したサイト
https://teratail.com/questions/321440 

以降 自分で調査した内容 (見る必要はありませんが、参考に)

wrong number of argumentsでエラーを調査

エラー内容から、推測
capybara gemで使うnode_filter.rb
wrong number of arguments (given 4, expected 3)=引数エラーが出ているらしい
と判明

???だったので調べる
https://qiita.com/TOSHIMITSU_MIYACHI/items/82417ab6126d816af4e4
どうやら

wrong number of arguments (a for b)
a=呼び出し側の引数の数
b=メソッド側の引数の数
があっていないということらしい。

あっていないと言われても、自分で作ったメソッドでもないし、もしかしてgemのバージョンがおかしいのか?と調査

capybaraについて調査

元々gemfileはrailsチュートリアルから丸々コピーして使っていた(一部エラー出てバージョンを変えたりはしてみた)
https://qiita.com/morrr/items/0e24251c049180218db4

Capybara = UIテストのためのrubyフレームワーク
らしい

理解はしたけど、エラーには関係ないよな。と振り出しに戻る

teratailから回答が...!!

terateilで質問する→回答なし→一晩考える→朝回答きていて確認

→結論の通り、

Rubyのバージョンが3.0.0、
一方Capybaraはバージョン3.31.0ではruby3.0.0では動かなくなる(記事執筆時点)
なので 
+ capybaraのバージョンを対応したものに上げるか
+ Rubyのバージョンを下げるか 
で対応する

ということでした。
全く考えもつかなかったので、今後は気をつけるようにしたいと思います。

Ruby のバージョンを落とすやり方

1
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
1
0