require
和gem
方法之间有什么区别?
例如,require 'minitest'
和gem 'minitest'
之间有什么不同?
假设你安装了两个版本的宝石foo
:
$ gem list foo
*** LOCAL GEMS ***
foo (2.0.1, 2.0.0)
require
,最新版本将默认加载:require 'foo' # => true
Foo::VERSION # => "2.0.1"
require
之前使用gem
,则可以指定要使用的不同版本:gem 'foo', '2.0.0' # => true
require 'foo' # => true
Foo::VERSION # => "2.0.0"
gem
而不随后调用require
不会加载宝石。gem 'foo' # => true
Foo::VERSION # => NameError: uninitialized constant Foo
Kernel#require 激活 gem 的最新版本。
Kernel#gem(由 RubyGems 添加)允许激活特定的 gem 版本;例如,gem 'stack', '>= 1.2'
。
gem
是require
的替代品,实际上,gem
只是告诉require
加载哪个版本的 gem。 - toro2kgem
再调用require
。 - Clint Pachl