Ruby需要路径

时间:2010-08-29 10:37:56

标签: ruby require

我有一个Ruby代码,在几个文件中有不同的类。在一个文件中,我开始执行。此文件require是我的其他文件。

  • 这是启动ruby代码的好方法吗?
  • 当我从符号链接运行代码时,例如DIR2/MyRubyCode是指向主文件DIR1/MyRubyCode.rb的链接,那么我的要求将失败。我通过在DIR1之前将路径$LOAD_PATH添加到require来解决了这个问题,但我认为有更好的方法可以做到这一点。你有什么建议吗?

3 个答案:

答案 0 :(得分:17)

如果您使用的是Ruby 1.9或更高版本,请为依赖项用户使用require_relative。

require_relative 'foo_class'
require_relative 'bar_module'

答案 1 :(得分:16)

如果您想检查Ruby文件是“require”还是使用“ruby MyRubyCode.rb”执行,请检查__FILE__常量。

# If the first argument to `ruby` is this file.
if $0 == __FILE__
  # Execute some stuff.
end

就require / $ LOAD_PATH问题而言,您始终可以使用require语句中的相对路径。例如:

# MyRubyCode.rb
require "#{File.dirname(__FILE__)}/foo_class"
require "#{File.dirname(__FILE__)}/bar_module"

foo_class.rbbar_module.rb文件包含在与MyRubyCode.rb相同的目录中。

答案 2 :(得分:6)

我知道这是一个老问题,但有一个更新的答案,我想发布它:

从更新版本的Ruby开始(我不确定何时),您可以使用以下命令在同一目录中要求文件:

require './foo_class'
require './bar_module'

它会在同一目录中加载名为foo_class.rbbar_module.rb的文件。

要检查您的文件是require d还是正常运行,请检查另一个答案。