Я пытаюсь создать плагин для 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
на моем экземпляре дискурса?Я все еще довольно новичок в программировании на ruby, поэтому, возможно, мой вопрос кажется немного глупым.
Вот ссылка, которая привела меня к созданию плагина:
https://meta.discourse.org/t/beginners-guide-to-creating-discourse-plugins-part-1/30515