我正在尝试在我的ruby脚本中使用rake
...(Ruby 1.8.6,JRuby 1.6.5)
使用gem install --remote rake
下载的佣金,在安装时看起来不错......
Fetching: rake-0.9.2.2.gem (100%)
Successfully installed rake-0.9.2.2
1 gem installed
我有一个简单的ruby脚本可以正常工作,但当我导入rake
以使用以下任何require
时,它开始抱怨......
require 'rake'
LoadError: no such file to load -- rake
or
require '/lib/rake'
LoadError: no such file to load -- lib/rake
经过一番搜索,我发现在require 'rubygems'
之前添加rake
可以解决问题....
require 'rubygems'
require 'rake'
即使它正在运作,我也有一些问题......
rake
上的gem规范将require_path
显示为lib
,为什么
require '/lib/rake'
没有工作?我误解了require_path
的重要性吗?
为什么有必要在require 'rubygems'
之前放置require
'rake'
答案 0 :(得分:5)
是的,你误解了意义。规范中的require_paths
是该gem的安装目录的子目录的数组,应该搜索属于gem的文件。
要了解rake的确切位置,请尝试以下方法:
$ gem which rake
你会发现它实际安装在与/lib
完全无关的地方;在我的系统上,它位于/var/lib/gems
之下。通常,Ruby gem存在于它们自己的目录结构中;标准Ruby包含路径($:
)中唯一的文件是rubygems
本身,您以前必须明确require
才能使任何实际的宝石可见。 (自Ruby 1.9以来,没有必要。)
Gems比仅加载库更复杂;你可以安装同一个gem的多个版本,并一次指定你想要的那个版本,如果只是将gems转储到标准的Ruby包含路径中,那么做其他不起作用的事情。
答案 1 :(得分:1)
require_path
告诉ruby这个gem的文件位于gem中。它使您能够键入require 'rake'
,然后ruby知道它需要在gem安装文件夹中查找/lib/rake
。