如何在红宝石中安装,要求和使用宝石

raf*_*ian 3 ruby gem jruby

我正试图rake在我的ruby脚本中使用...(Ruby 1.8.6,JRuby 1.6.5)

下载的rake使用gem install --remote rake,在安装时看起来不错......

Fetching: rake-0.9.2.2.gem (100%)
Successfully installed rake-0.9.2.2
1 gem installed
Run Code Online (Sandbox Code Playgroud)

我有一个简单的ruby脚本工作正常,但当我导入rake使用以下任何一个requires时,它开始抱怨....

require 'rake'
LoadError: no such file to load -- rake
  or
require '/lib/rake'
LoadError: no such file to load -- lib/rake
Run Code Online (Sandbox Code Playgroud)

经过一番搜索,我发现require 'rubygems'rake修复问题之前添加....

require 'rubygems'
require 'rake'
Run Code Online (Sandbox Code Playgroud)

即使它正在运作,我也有一些问题......

  1. 宝石规格rake显示require_pathlib,所以为什么不起作用require '/lib/rake'?我误解了意义require_path吗?

  2. 为什么有必要放在require 'rubygems'前面require 'rake'

Mar*_*eed 6

是的,你误解了意义.将require_paths在规范的数组是宝石的安装目录下的子目录应搜索属于宝石文件.

要找出rake到底在哪里,试试这个:

 $ gem which rake
Run Code Online (Sandbox Code Playgroud)

你会发现它实际安装在一个完全无关的地方/lib; 在我的系统上,它在/var/lib/gems.通常,Ruby gem存在于它们自己的目录结构中; 标准Ruby中唯一的文件包括path($:)rubygems本身,你曾经必须明确地require为了使任何实际的gem可见.(从Ruby 1.9开始,这不是必需的.)

宝石比只加载库更复杂; 你可以安装同一个gem的多个版本,并一次指定你想要的那个版本,如果只是将gems转储到标准的Ruby包含路径中,那么做其他不起作用的事情.