Когда нужно подумать о создании своего собственного Ruby-модуля в приложении Rails?
С помощью модуля Ruby вы можете сгруппировать кучу методов, которые вы можете использовать в одном месте, а затем включить их в класс, чтобы они как будто вы написали их в этом классе.
Какие практические применения существуют для модулей Ruby в приложении rails?
Я был бы признателен, если бы кто-то мог упомянуть пример того, где они на самом деле использовали собственный модуль, поэтому я понимаю, в каких ситуациях я должен думать о их создании. Спасибо.
Ответы
Ответ 1
Вы можете поместить их в каталог /lib, и они будут загружены с вашим проектом Rails.
Например, вы можете просмотреть это репо моего старого проекта: каталог lib проекта Rails
Так, например, у меня есть следующий модуль:
google_charts.rb
Module GCharts
class GoogleCharts
def some_method
end
end
end
И в любом месте моего приложения Rails я могу получить доступ к этим методам.
Итак, если бы я получил доступ к нему с контроллера, я бы просто сделал:
require 'google_charts'
GCharts::GoogleCharts.some_method
Ответ 2
1) Каждый раз, когда я собираюсь дублировать (или по существу дублировать) фрагмент кода: "О, я мог бы просто вырезать/вставить в этот другой контроллер..."
2) Каждый раз, когда я пишу код, который, очевидно, будет повторно использоваться в будущем.
3) Код существенного размера, который имеет конкретную цель, где эта цель довольно отличается от основной цели контроллера/модели. Это несколько связано с (2), но иногда код не будет использоваться повторно, но модуль помогает организации.
Ответ 3
Мы используем модули для функциональности, которые не привязаны к моделям ActiveRecord и не были абстрагированы в плагин или драгоценный камень.
Недавний пример из нашей производственной кодовой базы - это библиотека для интеграции с Campaign Monitor для управления списками адресов электронной почты. Ядро системы использует нашу пользовательскую модель, но фактическое взаимодействие с extenrl-сервисом абстрагируется с помощью модуля, который живет в/lib.