Используйте Mixin внутри блока уточнения - PullRequest
0 голосов
/ 13 февраля 2020

Я искал вокруг и не нашел ничего, что могло бы помочь, поэтому здесь я публикую свой вопрос.

Я пытаюсь использовать mixin внутри улучшенного патча, который, кажется, не работает на самом деле. Я не знаю, правильно ли я все делаю или это просто невозможно из-за несвоевременного процесса очистки в Ruby.

Для справки, я работаю над плагином Sketchup 2017, который вставлять Ruby Core 2.2.4. Последняя версия Sketchup 2019 включает Ruby Core 2.5.1.

Вот пример Coed, иллюстрирующий, что я на самом деле делаю:

Модуль, который будет включен

module RefineModule::HierarchyWrapper
  def insert
    ...
  end

  def parent_to
    ...
  end
end

Уточнение класса Sketchup

module RefineModule
  refine Sketchup::Group do
    include RefineModule::HierarchyWrapper

    def foo
      return self.class
    end
end

После применения исправления я могу настроить метод foo на экземпляре Sketchup::Group, но получаю NoMethodError при попытке использовать метод insert или parent_to:

Error: #<NoMethodError: undefined method `insert' for #<Sketchup::Group:0x00000117946e0648>>

Я сделал что-то не так или просто невозможно объявить миксин внутри блока уточнения?

Спасибо за помощь, ребята!

...