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