【发布时间】:2014-03-23 05:13:09
【问题描述】:
require 和 gem 方法有什么区别?
比如require 'minitest'和gem 'minitest'有什么区别?
【问题讨论】:
require 和 gem 方法有什么区别?
比如require 'minitest'和gem 'minitest'有什么区别?
【问题讨论】:
Kernel#require 激活最新版本的 gem。
Kernel#gem(由RubyGems 添加)允许激活特定的gem 版本。
【讨论】:
gem 是require 的替代品,实际上gem 只是告诉require 要加载哪个版本的gem。
假设您安装了两个版本的 gem 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。
gem 'foo' # => true
Foo::VERSION # => NameError: uninitialized constant Foo
【讨论】: