Ruby:在不同文件中使用的类对象

时间:2012-07-09 12:54:01

标签: ruby class object module

我想全局使用在主脚本中创建的对象。

对于ex我在不同的文件和类中有不同的模块在不同的ruby文件中

FileNameModA.rb

module A
  # ........
  # some code here
  # ........
end

FileNameModB.rb

module B
  # ........
  # some code here
  # ........
  objReport.addReport() # getting an error "ruby uninitialized local variable or object: Main"
end

FileNameClass_Report.rb

class Report
  def addreport()
  end
end

MainScript.rb

require "FileNameModA"
require "FileNameModB"
require "FileNameClass_Report"

include ModuleA
include ModuleB

objReport = Report.New

objReport.addReport() # Works fine here

您能告诉我如何在Ruby的不同文件/模块中创建和使用对象吗?

1 个答案:

答案 0 :(得分:2)

当你require "FileNameModB"执行模块B的定义,并且该定义调用objReport.addReport时该上下文中不存在

我不确定你想通过在模块定义期间调用addReport来实现什么,但你可以交换一些行并让它像这样工作:

require "FileNameClass_Report"
$objReport = Report.New

require "FileNameModA"
require "FileNameModB" # update your file to call $objReport.addReport

include ModuleA
include ModuleB
然而,整个事情看起来很乱,尝试重新思考你的类/模块以避免将它们包含在全局对象中