从零开始搭建的Rails 8.0.4应用在执行测试(bin/rails test)时,line_filtering.rb的参数个数不对
我新建了一个Rails项目,并生成了一个模型,具体如下:
rails new nonono --css=bootstrap -j esbuild
bin/rails g scaffold State name
之后我运行了测试套件
bin/rails test
并出现了以下错误:
$> bin/rails test
...
# Running:
/home/user/.rvm/gems/ruby-3.4.5/gems/railties-8.0.4/lib/rails/test_unit/line_filtering.rb:7:in 'run': wrong number of arguments (given 3, expected 1..2) (ArgumentError)
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:473:in 'block (2 levels) in Minitest::Runnable.run_suite'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:469:in 'Array#each'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:469:in 'block in Minitest::Runnable.run_suite'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:511:in 'Minitest::Runnable.on_signal'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:498:in 'Minitest::Runnable.with_info_handler'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:468:in 'Minitest::Runnable.run_suite'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:361:in 'block in Minitest.run_all_suites'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:361:in 'Array#map'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:361:in 'Minitest.run_all_suites'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:316:in 'Minitest.run'
from /home/user/.rvm/gems/ruby-3.4.5/gems/minitest-6.0.2/lib/minitest.rb:84:in 'block in Minitest.autorun'
我在谷歌上搜索过这个错误,似乎会偶尔出现。网上的帖子指出minitest 6在 Rails 7以上版本中不起作用。但该如何修复?我尝试使用minitest<6,但没有作用。
最让我吃惊的是,即使是在一个从零开始、使用原始Gemfile构建的应用中,这个问题也会出现。
版本信息:
ruby 3.4.5(2025-07-16修订20cda200d3)+PRISM [x86_64-linux]
Rails 8.0.4
--- 重要提示:我没有修改任何文件(例如Gemfile)
解决方案
Ruby on Rails 8.0与 Minitest 6.0不兼容(请参阅这个 错误报告)。
你要么把Minitest降级到5.1,要么将Ruby on Rails升级到8.1。两种方法都可以通过在Gemfile中设置所需的版本号,然后再次运行 bundle install 来实现。
由于这是一个新应用。我建议在你的电脑上升级Ruby on Rails,然后使用Rails的最新版本创建一个新应用:
$ gem update rails
$ rails new ...
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。