ruby - 无法正确包含 ruby​​ 模块

标签 ruby

我对 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/

相关文章:

ruby - Rails 应用程序不释放内存?

mysql - ld : library not found for -lzstd while bundle install for mysql2 gem Ruby on macOS Big Sur 11. 4

ruby - 树顶语法无限循环

ruby - 修改 gem 中的核心类

ruby-on-rails - 重构大型路由文件

ruby-on-rails - 无法为 ruby​​-debug-base 找到有效的 gem

ruby - 是否可以使用 watir 在浏览器中导航回来?

ruby-on-rails - rails 4 - 更新用户对象并绕过模型验证

ruby - 如何在 Ruby 中每 3 位小数后用空格格式化 float ?

ruby-on-rails - 找不到 xyzController 的操作 x