如何在另一个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.rb
和somelogic.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’。