require
和gem
方法之间有什么区别?
例如,require 'minitest'
和gem 'minitest'
之间有什么区别?
答案 0 :(得分:8)
假设您安装了两个版本的gem foo
:
$ gem list foo
*** LOCAL GEMS ***
foo (2.0.1, 2.0.0)
如果仅使用require
,默认情况下将加载最新版本:
require 'foo' # => true
Foo::VERSION # => "2.0.1"
如果您在致电gem
之前使用require
,则可以指定其他版本:
gem 'foo', '2.0.0' # => true
require 'foo' # => true
Foo::VERSION # => "2.0.0"
注意:使用gem
而不随后调用require
不会加载gem。
gem 'foo' # => true
Foo::VERSION # => NameError: uninitialized constant Foo
答案 1 :(得分:4)
Kernel#require激活宝石的最新版本。
Kernel#gem(由RubyGems添加)允许激活特定的宝石版本。