Я включаю чей-то модуль, который, кажется, разбит на несколько файлов. Это выглядит примерно так:Способ доступа к ошибкам из модуля?
alfred.rb:
require 'alfred/ui'
module Alfred
<code>
end
Alfred/ui.rb:
module Alfred
class Logger
def info(msg)
logger.info msg
end
end
end
Я пытаюсь получить доступ к методу info
из моего кода, который имеет require "alfred"
наверху, используя этот синтаксис:
Alfred::Logger.info("my message")
который не работает, d приводит к #<NameError: uninitialized constant Alfred::Logger>
.
Во-вторых, я бы хотел, чтобы кто-нибудь мог объяснить , как точно Ruby «конструирует» модуль, который разделен на несколько файлов, подобных этому. Входит ли код от alfred/ui.rb
в конце alfred.rb
в начале, где находится линия require
? Все ли это объединяется каким-то другим способом? Может быть, это даже не имеет значения, но, похоже, это поможет мне обернуть вокруг себя голову.
Полный код модуля, который я использую, - at Github в случае, если кто-либо заинтересован.
Может кто-нибудь объяснить, почему я не могу использовать метод таким образом и что можно сделать, чтобы исправить его?
Я получаю еще одну ошибку 'NoMethodError: undefined method' info 'для Alfred :: Logger: Class'. Откуда вы это делаете? –
, но в guthub repo Я не вижу определения класса 'Logger' внутри модуля' Alfred'. Я использую только 'class LogUI <:: Logger' ... Попробуйте' Alfred :: LogUI.info («мое сообщение») ' –
О, интересно, похоже, класс обновлен с момента последнего его загрузки. Я скачаю последние и дам это, когда я буду дома сегодня вечером. – ebarrere