`require` vs. `gem` methods?
require, ruby, rubygems
Solution
Say you have two versions of the gem `foo` installed:
$ gem list foo
*** LOCAL GEMS ***
foo (2.0.1, 2.0.0)
If you use only `require`, the newest version will be loaded by default:
require 'foo' # => true
Foo::VERSION # => "2.0.1"
If you use `gem` before calling `require`, you can specify a different version to use:
gem 'foo', '2.0.0' # => true
require 'foo' # => true
Foo::VERSION # => "2.0.0"
Note: using `gem` without subsequently calling `require` does not load the gem.
gem 'foo' # => true
Foo::VERSION # => NameError: uninitialized constant Foo
Problem
What's the difference between the `require` and `gem` methods? For example, what's the difference between`require 'minitest'` and `gem 'minitest'`?