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