如何在另一个Ruby代码文件中引用一个方法?

时间:2011-11-14 00:40:34

标签: ruby

我有一个Ruby代码文件(somelogic.rb),其中包含多个方法和类,位于/ home / user / code中。现在我在同一目录中编写另一个类,并希望引用somelogic.rb中的方法和类。我怎么做?我非常感谢任何意见。

4 个答案:

答案 0 :(得分:26)

如果您使用的是Ruby 1.9或更高版本,这是最简单的方法:

require_relative 'somelogic'

如果您希望代码在1.9及更早版本的Ruby中运行,则应该这样做:

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

无论您选择哪一行,都应将其放在ruby文件的顶部。然后,somelogic.rb中定义的任何类,模块或全局变量都可用于您的程序。

答案 1 :(得分:11)

以下是该方案:

/home/user/code/somelogic.rb
class MyMath
  def self.sin(number)
    ...
  end
end

您希望在其他文件sin中使用方法mylogic.rb

根据ruby的版本,执行以下操作之一:

Ruby 1.8.x
require "somelogic"
class OtherThings
  def some_method
    MyMath.sin(42)
  end
end

使用模式适用于所有ruby版本,但require语句可能不同。

Ruby 1.9.x
require_relative "somelogic"

或变体

Ruby 1.9.x
require "./somelogic"

第一个版本始终有效,第二个版本只有在ruby mylogic.rbmylogic.rb所在的目录中调用somelogic.rb时才会有效。

如果要从位于另一个目录中的起点加载该目录中的文件,则应使用:

Ruby 1.8.x and Ruby 1.9.x
$: << File.dirname(__FILE__)

这扩展了Ruby的加载路径。它读取__FILE__的(相对)路径,获取其目录,并将该目录的(绝对)路径添加到加载路径。因此,当按require进行查找时,将找到文件。

答案 2 :(得分:0)

答案 3 :(得分:0)

在第二个文件(比如otherlogic.rb)中,在第一行写入'/home/user/code/somelogic.rb'。

相关问题