【发布时间】:2013-12-16 01:59:38
【问题描述】:
我包含了其他人的模块,它似乎被拆分为多个文件。它看起来像这样:
阿尔弗雷德.rb:
require 'alfred/ui'
module Alfred
<code>
end
阿尔弗雷德/ui.rb:
module Alfred
class Logger
def info(msg)
logger.info msg
end
end
end
我正在尝试使用以下语法从我的代码中访问 info 方法,该方法顶部有 require "alfred":
Alfred::Logger.info("my message")
这不起作用,并导致#<NameError: uninitialized constant Alfred::Logger>。
其次,如果有人可以解释 Ruby 如何准确地“构建”一个像这样拆分为多个文件的模块,我会很高兴。来自alfred/ui.rb 的代码是否包含在alfred.rb 的末尾require 行的开头?这一切是否以其他方式组合在一起?也许这甚至无关紧要,但它似乎可以帮助我更好地理解它。
我正在使用的模块的完整代码是at Github,以防有人感兴趣。
有人可以帮助解释为什么我不能以这种方式使用该方法,以及可以做些什么来解决它?
【问题讨论】:
-
我收到另一个错误
NoMethodError: undefined methodinfo' 对于 Alfred::Logger:Class`。您从哪里拨打电话? -
但在 Guthub 存储库中,我没有看到
Alfred模块内的Logger类的定义。我只看到class LogUI < ::Logger...试试Alfred::LogUI.info("my message") -
哦,有趣,自从我上次下载以来,该课程似乎已更新。我会下载最新的,今晚在家的时候试一试。