J'apprends comment utiliser Module.prepend
au lieu de alias_method_chain
dans mon code Ruby, et je l'ai remarqué que certaines personnes utilisent send
pour appeler (example):Pourquoi les gens utilisent `Module.send (: prepend, ...)`?
ActionView::TemplateRenderer.send(:prepend,
ActionViewTemplateRendererWithCurrentTemplate)
Alors que d'autres appellent directement (example) :
ActionView::TemplateRenderer.prepend(ActionViewTemplateRendererWithCurrentTemplate)
Et, bien que je ne l'ai pas vu quelqu'un utiliser ce style, je pense de la documentation que vous pouvez même écrire ce dans le module vous préfixer de:
module ActionViewTemplateRendererWithCurrentTemplate
# Methods you're overriding go here
prepend_features ActionView::TemplateRenderer
end
Y a-t-il une différence entre ces trois styles? Y a-t-il une raison de favoriser l'un par rapport aux autres?
Probablement les gens l'écrivent encore de cette façon à cause des «vieilles habitudes», puisque #include et #prepend étaient des méthodes privées avant Ruby 2.1. – Matheno
'prepend_features' est une méthode de hook qui est appelée par' prepend' et généralement * non * prévue ni conçue pour être appelée directement. –