de responsabilidad: A pesar de que estoy pidiendo en el contexto de una aplicación Rails, estoy no hablar de ayudantes carriles (es decir, ayudantes de vista)¿Cuál es la forma preferida de usar métodos de ayuda en Ruby?
Digamos que tengo un método de ayuda/función:
def dispatch_job(job = {})
#Do something
end
Ahora quiero utilizar esto desde varios lugares diferentes (la mayoría de los controladores, sino también a unos pocos trabajadores BackgrounDRb)
¿Cuál es la mejor forma de hacer esto?
puedo pensar en dos posibilidades:
1. utilizar una clase y hacer que el ayudante de un método estático:
class MyHelper
def self.dispatch_job(job = {})
end
end
class MyWorker
def run
MyHelper.dispatch_job(...)
end
end
2. Uso de un módulo e incluyen el método en lo clase que necesito esta funcionalidad
module MyHelper
def self.dispatch_job(job = {})
end
end
class MyWorker
include MyHelper
def run
dispatch_job(...)
end
end
3. Otras posibilidades de que no conozco todavía
...
El primero de ellos es más similar a Java, pero no estoy seguro de si el segundo es realmente un uso adecuado de los módulos de Ruby.
¿Por qué es que una mejor que la forma de clase estática? –
Esa es una buena pregunta, supongo que iría con la clase estática o algún tipo de biblioteca común para los métodos autónomos aleatorios que necesitaría en todas partes y ampliando el controlador de la aplicación cuando necesito que mis métodos tengan acceso a los datos del controlador (como params y tal). –