我想全局使用在主脚本中创建的对象。
对于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的不同文件/模块中创建和使用对象吗?
答案 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
然而,整个事情看起来很乱,尝试重新思考你的类/模块以避免将它们包含在全局对象中