Disclaimer: Anche se mi sto chiedendo in un contesto di un'applicazione Rails, sto non parlando di Rails aiutanti (cioè view helpers)Qual è il modo migliore di usare i metodi di aiuto in Ruby?
Diciamo che ho un metodo di supporto/funzione:
def dispatch_job(job = {})
#Do something
end
Ora voglio usare questo da diversi luoghi diversi (per lo più controllori, ma anche alcuni operai BackgrounDRb)
Qual è il modo migliore per fare questo?
Mi vengono in mente due possibilità:
1. utilizzare una classe e fare l'aiutante di un metodo statico:
class MyHelper
def self.dispatch_job(job = {})
end
end
class MyWorker
def run
MyHelper.dispatch_job(...)
end
end
2. Usare un modulo e includere il metodo in qualunque classe ho bisogno di questa funzionalità
module MyHelper
def self.dispatch_job(job = {})
end
end
class MyWorker
include MyHelper
def run
dispatch_job(...)
end
end
3. Altre possibilità che non conosco ancora
...
Il primo è più simile a Java, ma non sono sicuro se il secondo è in realtà un uso appropriato dei moduli di Ruby.
Perché è che una migliore rispetto al modo statico di classe? –
Questa è una buona domanda, suppongo che andrei con la classe statica o un qualche tipo di libreria comune per i metodi autonomi casuali che avrei bisogno dappertutto ed estendere il controller dell'applicazione quando ho bisogno dei miei metodi per avere accesso ai dati del controller (come parametri e così via). –