我使用的是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修订版43784)[x86_64-darwin13.0.2]
答案 0 :(得分:3)
所以我意识到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版。
答案 1 :(得分:1)
如果您通过 gem 安装,则所有系统范围的gem都将依赖于该版本。虽然 bundle 安装,但请确保您的gem文件中的所有依赖项都可供您的应用程序使用。
sunspot_rails
nokogiri (>= 1.2.0)
webrat
nokogiri (>= 1.3)
两个宝石都需要 nokogiri ,但它们确实有首选版本号。在这种情况下,如果您通过 gem 安装,则会出现版本冲突。但捆绑会智能地处理您的版本需求。