`require` 和 `gem` 方法有什么区别?

7

requiregem方法之间有什么区别?

例如,require 'minitest'gem 'minitest'之间有什么不同?

2个回答

8

假设你安装了两个版本的宝石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

6

4
从答案中可以看出,gemrequire 的替代品,实际上,gem 只是告诉 require 加载哪个版本的 gem。 - toro2k
感谢在这里分享您的知识 :-) +1 - Abdo
Kernel#gem 只会 激活 指定 gem 的特定版本。您必须在加载它之前使用 Kernel#require 命令来加载该 gem;因此,您必须先调用 gem 再调用 require - Clint Pachl

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接