ruby - 为什么有时需要安装minitest gem?

标签 ruby gem minitest

我正在使用 Ruby 2.0。

有时我会遇到无法简单地require 'minitest' 的情况。它给了我

irb> require 'minitest'
LoadError: cannot load such file -- minitest
from rubygems/core_ext/kernel_require.rb:55:in `require'

我需要先安装 minitest gem。但是我认为 minitest 捆绑在 Ruby 标准库中。

我们什么时候需要通过 gem install 或 Gemfile 显式安装 minitest gem?

如果需要显式安装,Gemfile bundle install 是否优先于 gem install

更新

我自己使用 rbenv。我也通过 rbenv 安装我的 Ruby。
我的 ruby​​ 版本是 ruby​​ 2.0.0p353 (2013-11-22 revision 43784) [x86_64-darwin13.0.2]

最佳答案

所以我意识到 MiniTest 从 4.x 到 5.x 有一些不兼容的更新 不知何故,我使用的是 5.x 版,但我的问题似乎出现在使用 4.x 版时。

这是它按预期工作的时间:

irb> require 'minitest'
=> true
irb> require 'minitest/autorun'
=> true
irb> MiniTest::Test
=> Minitest::Test
irb> MiniTest.constants
=> [:Parallel, :VERSION, :Runnable, :AbstractReporter, :Reporter, :ProgressReporter, :StatisticsReporter, :SummaryReporter, :CompositeReporter, :Assertion, :Skip, :UnexpectedError, :Guard, :BacktraceFilter, :Test, :Assertions, :Unit, :Spec, :Expectations, :Mock]
irb> MiniTest::Unit::VERSION
=> "5.3.2"

这是不是。我安装了 Ruby 2.1 的全新副本并复制了以下内容。

irb> require 'minitest'
LoadError: cannot load such file -- minitest
irb> require 'minitest/autorun'
=> true
irb> MiniTest::Test
NameError: uninitialized constant MiniTest::Test
irb> MiniTest.constants
=> [:Assertion, :Skip, :BacktraceFilter, :Assertions, :Unit, :Spec, :Expectations, :Mock]
irb> MiniTest::Unit::VERSION
=> "4.7.5"

总结

所以我想当使用旧的 minitest 版本时,我应该通过 Gemfile/bundler 显式安装版本 5。

关于ruby - 为什么有时需要安装minitest gem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23077637/

相关文章:

ruby - Gem 安装无限期挂起

ruby-on-rails - 在 Rails 3 表单中处理非 utf-8 数据提交的最佳方式是什么?

ruby-on-rails - 客户提交表单以在 Rails 上创建 Cron 作业

ruby-on-rails - 如何仅将 csv 中的几列插入表中

ruby-on-rails - 独立 Ruby 脚本中的 Ruby Gem

ruby-on-rails - Rails 测试数据库中的默认值失败

ruby - 如何使用 lib minitest 或 Test :Unit? 为单元测试着色

ruby - MiniTest:如何测试退出关键字

ruby - 按出现次数排序和显示项目

ruby-on-rails - Rails 更新属性