要求'rubygems'

时间:2010-04-26 07:41:56

标签: ruby rubygems require

我已经看到许多带有此行的Ruby代码示例(例如,http://www.sinatrarb.com/)。这需要什么目的?

# require 'rubygems'
require 'sinatra'
get '/hi' do
  "Hello world!"
end

在所有情况下,代码都可以不使用此行。

3 个答案:

答案 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命令要求特定宝石的特定版本。

https://guides.rubygems.org/patterns/#requiring-rubygems

答案 2 :(得分:13)

作为对先前(和正确答案)的补充:Ruby 1.9和更新版内置了RubyGems,因此不需要require 'rubygems'Source here