Я пытаюсь создать плагин для Discourse, написанный на Ruby. Как обычные пустые файлы, моя программа работает идеально и без ошибок, но когда я пытаюсь адаптировать свой код к контексту плагина, я сталкиваюсь с проблемами, и я не уверен, действительно ли я понимаю, как должна быть реализована вся идея с функциями. Я подумал, что было бы разумно иметь более одного файла, передать функциональность в разных методах и потребовать их в своего рода «основном» файле. Например, получение твитов — это один метод в дополнительном файле, отправка твитов — другой метод в другом файле. В пустом коде ruby он работает нормально, но когда я пытаюсь интегрировать его в файловую структуру плагина, я получаю сообщение об ошибке.
undefined method `my_method' for #<Plugin::Instance:0x00007f9004012fc0> (NoMethodError)
файлы с методами находятся в каталоге lib, а «основной» файл, который называется plugin.rb, находится в основной папке.
так что я пытался
require_relative 'lib/my_method'
и по-другому
require_relative File.expand_path('../lib/my_method.rb', __FILE__)
но я все еще сталкиваюсь с этой ошибкой.
я не определял какие-либо классы или модули или что-то в этом роде, поэтому «файлы методов» буквально начинаются с
def self.my_method
#my code here
end
Может ли это быть причиной того, что я столкнулся с ошибкой выше? Почему он работает как пустой код ruby, но не когда я пытаюсь запустить плагин с rails s
на моем экземпляре дискурса? Я все еще довольно новичок в программировании на руби, поэтому, возможно, мой вопрос покажется немного глупым.
Вот ссылка, которая привела меня к созданию плагина:
https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins-part-1/30515