Я пытаюсь добавить новый метод к драгоценности Тора. В частности, я хочу добавить метод в Thor :: Shell :: Basic. В моей драгоценный камень на основе Thor, в бункере/МояКоманда, у меня есть это:Как сделать Monkey-patch жемчужиной с иерархией?
require 'thor'
require 'ext/thor/extension'
Thor.include ThorExtensions::Thor::Shell::Basic
MyCommand.start
В Lib/вн/Thor/extension.rb, у меня есть:
module ThorExtensions
module Thor
module Shell
module Basic
def extension_method
Когда я называю extension_method, я получите сообщение об ошибке, в котором говорится, что он не может прочитать атрибут Thor :: Shell :: Basic (дополнение). Когда я перехожу в Thor :: Shell :: Basic, я вижу, что мой метод указан как метод этого класса, но он, похоже, не имеет доступа к нему во время выполнения. Я делаю что-то неправильно?
В последнем случае, я бы включить эту последнюю строку в файл bin/mycommand, который запускает точный запуск, или я бы включил его в тот же файл, что и модуль MyExtension, а затем потребовал, чтобы этот файл был в моем драгоценном камне? Я продолжаю пробовать разные методы включения моего кода, который отлично работает, когда я делаю это вручную, но он вообще не включается, когда я запускаю bin/mycommand или метод существует, но не могу получить доступ к приватным методам Тор :: Shell :: Basic. –
Не имеет значения, где он так долго добавляется до 'MyCommand.start'. – sandelius
@ DanR Это сработало для вас? – sandelius