我对 Ruby 有点陌生,所以我什至不确定我所做的是否是最佳实践。现在我正在尝试定义一个位于 something.rb 模块中的函数 import: 需要'rexml/文档'
module MyModule
def import(file)
Document.new(File.new(file))
end
end
我有另一个文件 somethingelse.rb 调用文件 something.rb 将使用函数 import 需要'something.rb'
class MyClass
include MyModule
def initialize(file)
@myFile = import(file)
end
end
只有当我尝试从另一个文件导入模块时才会出现问题。当我在同一个文件中使用该模块时,一切都按照您的预期进行。我得到的错误是:
usr/lib/ruby/1.8/rexml/dtd/elementdecl.rb:8: warning: already initialized constant PATTERN_RE
XMLTest.rb:9: uninitialized constant MyModule (NameError)
我做错了什么?
最佳答案
您需要在您的第一个文件中要求您尝试加载的其他文件,Ruby 不会自动为您做这件事。因此,如果您的模块位于名为“something.rb”的文件中:
require "something"
class MyClass
include MyModule
def initialize(file)
@myFile = import(file)
end
end
关于ruby - 无法正确包含 ruby 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9013727/