新手问题 require rubygems 问题

bpw11320 · 2012年10月05日 · 最后由 artone 回复于 2012年10月05日 · 7281 次阅读

刚找了个 rack 的 pdf 参照这上面的在弄。里面有段代码如下,我在 irb 里面一步步的输入,require "rubygems" 控制台返回的是 false,pdf 上说是会返回 true 的,但是我试了下代码可以运行。搜索了下 http://railsfun.tw/redirect.php?fid=26&tid=379&goto=nextoldset 里面给出的说明是,如果 gem 已经引入是会返回 false 的。

是这样的么?require "rubygems"到底会导入哪些包呢?

require "rubygems"
require "rack"

def pp(hash)
  hash.map { |key, value| }.sort.join("<br/>")
end

Ruby1.9 默认就引入了 rubygems

Ruby1.9.3 缺省加载 rubygems, rubygems 是采用重写 require 实现包管理的. 默认下,已经 require 的话,返回值为 false. 此 false 不代表问题,仅表明加载成功但已经在之前加载过了。

#2 楼 @lyfi2003 #1 楼 @hooopo 多谢解答,还有个问题。 rubygems 是个什么玩意?和 gem 命令相比 是什么呢?

#3 楼 @bpw11320 我不知道你说 gem 命令是指什么。这里分两种情况,gem 在 Ruby 代码中,即方法。gem 作为单独命令。

  1. gem 方法,不加载 rubygems 就无法使用 gem xx .

  2. gem 作为单独命令,由 rubygems 提供支持。你可以打开 RubyRoot/bin/gem 查看 ( RubyRoot 为你的 Ruby 安装目录。

#3 楼 @bpw11320

这里有很详细的介绍:http://guides.rubygems.org/

A RubyGem is a software package, commonly called a “gem”. Gems contain a packaged Ruby application or library. The RubyGems software itself allows you to easily download, install, and manipulate gems on your system.

需要 登录 后方可回复, 如果你还没有账号请 注册新账号