我试图要求 test/unit
的新版本(即不是与 ruby 捆绑的版本) .根据 instructions我用 gem i test-unit
安装它.但是现在当我需要 test/unit
我似乎需要旧版本。例如,我没有方法 Test::Unit.at_start
.即使我明确要求新的 test/unit
的完整路径,也会发生这种情况。安装。
我有什么办法可以调查正在加载哪些符号以及为什么?
最佳答案
由于 Ruby 附带了 test/unit
的实现(它实际上是一个 Minitest 兼容性包装器)调用 require 'test/unit'
将加载该版本,因为它已经在加载路径上。调用require '/absolute/path/to/test/unit'
将加载新文件,但是当该文件调用例如require 'test/unit/testcase
它将从 stdlib 加载文件,从而产生混合类(所以不要这样做)。
您需要做的是使用 gem
method 激活 gem在你面前require
它。这将确保 gem lib 路径在 stdlib 之前的加载路径上,所以 require
将首先找到这些文件。
gem 'test-unit' # You can also pass a specific version as a second
# argument to `gem` if you want.
require 'test/unit' # This will find the gem version.
# Now the gem version will be loaded.
关于ruby - 如何要求正确版本的测试/单元,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24003388/