新手问题 require rubygems 问题

bpw11320 · October 05, 2012 · Last by artone replied at October 05, 2012 · 7281 hits

刚找了个 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.

You need to Sign in before reply, if you don't have an account, please Sign up first.