0

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

Я попытался добавить модули в Lib каталога, а затем выдавать директиву загрузки в конфигурационном файле/application.rb так:

config.autoload_paths += %W(#{config.root}/lib) 

Затем с помощью файла Инициализаторы/mailboxer.rb включить эти в соответствующие классы.

Я также попытался (внутри файла intitializer/mailboxer.rb) написать инструкции class_eval для самих классов и добавить методы через инструкции class_eval.

я в настоящее время сдачи модулей в директории приложения/хелперов и изменение имен модулей в MailboxerMessagesHelper, MailboxerConversationsHelper и т.д., а затем с помощью файла инициализации/mailboxer.rb включить их так:

Mailboxer::Message.include(MailboxerMessagesHelper) 

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

ответ

0

Обнаружено, что одна вещь наверняка вызывает эту проблему. Похоже, что модификация файлов модулей каким-либо образом приведет к тому, что приложение вообще не увидит модуль до перезагрузки сервера.

Я также создал каталог в каталоге помощников, названный в честь почтового ящика, который, как я думаю, является условным. Затем я добавил модуль внутри каталога и использовал соглашение об именах, например: Mailboxer :: ConversationsHelper. Кажется, работает до сих пор.