我无法弄清楚红宝石的要求

时间:2010-11-24 14:06:26

标签: ruby require

我是Ruby的新手

MakModule.rb

module Display
  class Multiply
    def Multiply.mul(first, second)
      return first * second
    end
  end
end

MakRequire1.rb

require "Display"
puts Multiply.mul 5,6

MakRequire2.rb

require "MakModule.rb"
puts Multiply.mul 5,6

这两个文件都给我下面的错误

ruby: No such file or directory -- makRequire (LoadError)

我该如何更正我的代码?

5 个答案:

答案 0 :(得分:4)

试试这个,

require File.join(File.dirname(__FILE__),'MarkModule')

答案 1 :(得分:4)

您在此处发布的代码根本不可能生成该错误消息。错误消息显示您尝试require名为makRequire的文件,但该文件名不会出现在您发布的代码中的任何位置。

如果没有产生实际错误的实际代码,则无法回答您的问题。但是,这里有一些一般提示:

每当计算机告诉你它无法找到某些东西时,在99%的情况下,问题是计算机告诉它找不到的东西实际上并不存在。

因此,在这种情况下,计算机会告诉您它找不到名为makRequire.rb的文件,最可能的解释是makRequire.rb实际上并不存在。因此,您需要检查的第一件事是: makRequire.rb(注意大小写和文件扩展名)实际存在?因为如果它不存在,那么计算机找不到它的原因应该是相当明显的。

在99%的 rest 案例中,问题是计算机正在寻找的东西存在,但计算机正在查找错误的地方。因此,在确认makRequire.rb实际 存在之后,您需要确保该文件所在的目录位于Ruby的$LOAD_PATH中,如果它不是' t,您需要将该目录添加到Ruby的$LOAD_PATH。或者,如果您希望require文件相对于执行要求的文件的路径,则需要使用require_relative而不是require

要检查的第三件事是,拥有ruby进程的用户是否具有足够的权限来访问文件makRequire.rb,它所在的目录及其所有父目录。

答案 2 :(得分:1)

尝试require './MakModule',因为.是当前目录。

答案 3 :(得分:0)

require 'MakModule'

答案 4 :(得分:0)

您可以要求位于同一目录中的文件。要使用模块,您通常会在类定义中include模块。因此,您永远不会需要Display,您需要包含Display的文件(通常不带.rb扩展名)。

相关问题