在`require`和`File.expand_path`中加载Ruby文件

时间:2013-02-14 16:49:21

标签: ruby

我正在阅读gemspec文件,目录看起来像

gem/
  lib/
  a.rb
  gem.gemspec

在gemspec中有一行

$:.push File.expand_path('../lib', __FILE__)

我想这意味着将lib文件夹添加到Ruby的加载路径中,所以在那里你可以require填充。

但为什么../lib不仅仅是lib

使用与上述相同的示例,如果您要在a.rb中加载代码,那么您不是仅仅require 'a'而不是require '../a'吗?

请注意liba.rbgemspec的相对位置相同。

1 个答案:

答案 0 :(得分:0)

使用require时,您只需添加所需的文件,如:

require 'yourfile'

对于上面的示例,您只需要在您正在处理的文件夹中包含所需的文件。如果它是gem,则无关紧要,您只需添加require语句即可。您所看到的是gem如何知道要包含在require中而不必指定文件夹。当您使用gem时,通常会安装它,然后需要它,而不指定从何处获取它。

另一个选项是将所需文件放在另一个文件夹中,然后指定该文件/文件夹的路径:

require './yourfolder/yourfile'