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

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

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

require_relative 'somelogic' 

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

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

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

这是场景:

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

您想在其他文件mylogic.rb使用sin方法。

根据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" 

第一个变体始终有效,第二个变体只有在mylogic.rbsomelogic.rb所在的目录中调用ruby mylogic.rb mylogic.rb somelogic.rb

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

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

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

查看Ruby的require关键字

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