如何使用require或load?

时间:2014-08-10 12:28:41

标签: ruby

我在一个文件中定义了一个类,比如testAAA.rb

在目录中,我有另一个文件

我发现以下都是错误的

  1. 要求" testAAA"
  2. 要求" testAAA.rb"
  3. 加载" testAAA"
  4. 似乎我只能使用load" testAAA.rb"

    我认为使用load" testAAA.rb"看起来很难看,我怎样才能正确使用"要求testAAA"在这种情况下

2 个答案:

答案 0 :(得分:0)

require在加载路径中搜索文件(位于$LOAD_PATH全局,别名为$:),默认情况下当前目录不在加载路径上(它曾经是早期版本的Ruby)。

有几种方法可以要求你想要的文件,这里最简单的可能就是使用require_relative

require_relative "testAAA"

这与此类似,它基于第一个文件显式构造了所需文件的绝对路径:

require File.expand_path("../testAAA", __FILE__)

您还可以使用./显式加载相对于当前工作目录的文件:

require "./testAAA"

请注意,相同,不需要相对于第一个文件的文件,工作目录可能与第一个文件所在的目录不同。如果您在同一目录中启动程序,它们将碰巧相同。

您还可以将相关目录添加到加载路径。您可能不希望为简单脚本执行此操作,在创建更大的应用程序时更有用:

$LOAD_PATH.unshift File.dirname(__FILE__) # or whatever directory you want to add
require 'foo'

答案 1 :(得分:-2)

如果您使用的是加载方法,则必须包含扩展名.rb。如果您使用的是require语句,则省略扩展名。示例如下;

load 'yourfilehere.rb'

require 'yourfilehere'