我已经看到许多带有这一行的 Ruby 代码示例(例如,http://www.sinatrarb.com/)。这个要求的目的是什么?
# require 'rubygems'
require 'sinatra'
get '/hi' do
"Hello world!"
end
在所有情况下,代码都可以在没有此行的情况下工作。
我已经看到许多带有这一行的 Ruby 代码示例(例如,http://www.sinatrarb.com/)。这个要求的目的是什么?
# require 'rubygems'
require 'sinatra'
get '/hi' do
"Hello world!"
end
在所有情况下,代码都可以在没有此行的情况下工作。
require 'rubygems'
将调整 Ruby loadpath
,让您成功地要求您通过 rubygems 安装的 gem,而无需获得LoadError: no such file to load -- sinatra
.
从 rubygems-1.3.6 文档中:
当需要 RubyGems 时,Kernel#require 被我们自己的替换,它能够按需加载 gem。
当您调用 require 'x' 时,会发生以下情况:
如果可以从现有的 Ruby 加载路径加载该文件,则可以。
否则,将搜索已安装的 gem 以查找匹配的文件。如果在 gem 'y' 中找到它,则激活该 gem(添加到加载路径)。
如果该文件已被加载,则返回 false 的正常要求功能被保留。
请参阅Kernel#require的文档以了解为什么这是必要的。
它往往是多余的。不过,它允许您使用命令来要求特定 gem 的特定版本gem
。
作为对先前(和正确答案)的补充:Ruby 1.9 和更新版本内置了 RubyGems,因此没有真正需要require 'rubygems'
. 来源在这里