我有两个 Ruby 项目(1 个 Rails,1 个 vanilla)。两者都使用 Ruby 3.0.3。在我的 Ruby 项目中(在捆绑我的 Rails 项目之前),Minitest::Pride 已加载并在运行时运行
rake test
。但是,在捆绑 Rails 项目之后,我又回到了 Ruby 项目中 rake test
的旧红色/绿色。
这里是文件结构(为了简单起见,我将 Rails 项目剥离成一个 Gemfile,我可以在干净的 Ruby Rbenv 安装上重现此错误):
ruby-project/
-- test/
-- example_test.rb
-- test_helper.rb
Gemfile
Rakefile
rails-project/
-- Gemfile
ruby-project/test/example_test.rb:
require "test_helper"
class ExampleTest < Minitest::Test
25.times do |i|
define_method "test_success#{i}" do
assert true
end
end
end
ruby-project/test/test_helper:
require "minitest/autorun"
require "minitest/pride"
红宝石项目/宝石文件:
source "https://rubygems.org"
gem "rake"
gem "minitest"
红宝石项目/Rakefile:
require "rake/testtask"
Rake::TestTask.new(:test) do |t|
t.libs = %w(lib test)
t.pattern = "test/**/*_test.rb"
end
task :default => :test
rails-project/Gemfile:
source "https://rubygems.org"
ruby "3.0.3"
gem "rails", "~> 7.0.3"
重现步骤(已安装 rbenv):
rbenv install 3.0.3
bundle
rake test
(已加载 Minitest::Pride 插件)bundle
rake test
(Minitest::Pride 插件未加载)我尝试过的事情:
我在 M1 Mac 上运行,但我不确定这是否重要。有趣的是,
rails test
在真正的 Rails 项目中将加载 Minitest::Pride。
关于发生了什么以及如何解决的任何想法?
更新
从 Ruby 项目运行
bundle exec rake test
解决了这个问题。但我还是很想知道为什么。特别是当两个项目都使用相同版本的 rake 和 minitest gems 时。