我有一个Ruby代码文件(somelogic.rb),它包含几个方法和类,位于/ home/user/code中.现在我在同一目录中编写另一个类,并希望引用somelogic.rb中的方法和类.我怎么做?我非常感谢任何意见.
Dav*_*son 27
如果您使用的是Ruby 1.9或更高版本,这是最简单的方法:
require_relative 'somelogic'
Run Code Online (Sandbox Code Playgroud)
如果您希望代码在1.9及更早版本的Ruby中工作,则应该这样做:
require File.join File.dirname(__FILE__), 'somelogic'
Run Code Online (Sandbox Code Playgroud)
无论选择哪一行,都应该将它放在ruby文件的顶部.然后,somelogic.rb中定义的任何类,模块或全局变量都可用于您的程序.
mli*_*elt 13
这是场景:
/home/user/code/somelogic.rb
class MyMath
def self.sin(number)
...
end
end
Run Code Online (Sandbox Code Playgroud)
您想要使用sin其他文件中的方法mylogic.rb.
根据ruby的版本,执行以下操作之一:
Ruby 1.8.x
require "somelogic"
class OtherThings
def some_method
MyMath.sin(42)
end
end
Run Code Online (Sandbox Code Playgroud)
使用模式适用于所有ruby版本,但require语句可能不同.
Ruby 1.9.x
require_relative "somelogic"
Run Code Online (Sandbox Code Playgroud)
或变异
Ruby 1.9.x
require "./somelogic"
Run Code Online (Sandbox Code Playgroud)
第一个变化工作的时候,只有当你拨打第二个ruby mylogic.rb在目录mylogic.rb和somelogic.rb所在的位置.
如果要从位于另一个目录中的起始点加载该目录中的文件,则应使用:
Ruby 1.8.x and Ruby 1.9.x
$: << File.dirname(__FILE__)
Run Code Online (Sandbox Code Playgroud)
这扩展了Ruby的加载路径.它读取(相对)路径__FILE__,获取其目录,并将该目录的(绝对)路径添加到加载路径.因此,当执行查找时require,将找到文件.