`require`与`gem`方法?

时间:2014-02-21 15:37:59

标签: ruby gem require

requiregem方法之间有什么区别?

例如,require 'minitest'gem 'minitest'之间有什么区别?

2 个答案:

答案 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添加)允许激活特定的宝石版本。