要求';rubygems';
我已经看到了这行代码的许多Ruby代码示例(例如)。这样做的目的是什么要求';rubygems';,ruby,rubygems,require,Ruby,Rubygems,Require,我已经看到了这行代码的许多Ruby代码示例(例如)。这样做的目的是什么 # require 'rubygems' require 'sinatra' get '/hi' do "Hello world!" end 在任何情况下,代码都可以在没有这一行的情况下工作。这通常是多余的。它允许您使用gem命令要求特定gems的特定版本 require'rubygems'将调整Ruby加载路径,允许您成功地要求通过rubygems安装的gems,而不会得到加载错误:没有这样的文件要加载--sinat
# require 'rubygems'
require 'sinatra'
get '/hi' do
"Hello world!"
end
在任何情况下,代码都可以在没有这一行的情况下工作。这通常是多余的。它允许您使用
gem
命令要求特定gems的特定版本
require'rubygems'
将调整Ruby加载路径
,允许您成功地要求通过rubygems安装的gems,而不会得到加载错误:没有这样的文件要加载--sinatra
根据rubygems-1.3.6文件:
当需要RubyGems时,内核#require将替换为我们自己的
能够根据需要装载宝石
当您调用require“x”时,会发生以下情况:
- 如果可以从现有的Ruby加载路径加载该文件,则 是
- 否则,将搜索已安装的gems以查找 比赛。如果在宝石“y”中找到,则该宝石被激活 (添加到加载路径)
请参阅文档以了解为什么这是必要的。作为之前(和正确答案)的补充:RubyGems内置了RubyGems,Ruby1.9和更新版本,因此没有真正需要
要求“RubyGems”
顺便说一句,我不推荐。请参阅Ryan Tomayko的帖子:@Carmine Paolino,关于您的评论:Sinatra是一块宝石。如果不使用require'rubygems'
,确保要求它不会产生错误的最佳方法是什么?在Ruby 1.9中,要求“rubygems”是自动发生的。在以前的Rubies中,rubygems不是自动需要的,您将得到错误。你最好的选择是自动输入,除非你确定你总是在1.9+中运行。Ruby不会在意你在1.9+中是否需要它两次,你的代码在1.8中也会很满意。随便。@yar:我链接的帖子提供了3种解决方案。@Greg:引用Ryan Tomayko:“我用来管理$LOAD_路径的系统与您的库/应用/测试无关。是否使用rubygems是一个环境问题。你的库或应用程序在这件事上应该没有发言权。明确要求rubygems不是必要的,或者是误导性的。“rubygems将选择随后安装的gems的最新版本。如果没有找到此类软件,则会生成异常。为什么这是多余的?这是加载所需gem的最佳方式。实际上,“要求使用‘rubygems’”“不加载所需的gem,它只修改“require”方法的行为。您是对的,只要ruby不是使用--disable rubygems
构建的。