Отказ от ответственности: Несмотря на то, что я прошу в контексте приложения Rails, я не говорить о Rails хелперы (т.е. Помощники)Каков предпочтительный способ использования вспомогательных методов в Ruby?
Скажем, у меня есть вспомогательный метод/функцию:
def dispatch_job(job = {})
#Do something
end
Теперь я хочу использовать это из нескольких разных мест (в основном контроллеров, но и нескольких рабочих BackgrounDRb)
Что предпочтительный способ сделать это?
Я могу думать о двух возможностях:
1. Использование класса и сделать Helper статический метод:
class MyHelper
def self.dispatch_job(job = {})
end
end
class MyWorker
def run
MyHelper.dispatch_job(...)
end
end
2. Используйте модуль и включить метод в любой класс мне нужна эта функциональность
module MyHelper
def self.dispatch_job(job = {})
end
end
class MyWorker
include MyHelper
def run
dispatch_job(...)
end
end
3. Других возможностей я не знаю пока
...
Первая больше Java-как, но я не уверен, что если второй один действительно соответствующее использование модулей в Ruby.
Почему это лучше чем статический класс? –
Это хороший вопрос, я думаю, что я бы пошел со статическим классом или какой-то общей библиотекой для случайных автономных методов, которые мне понадобятся повсюду и расширения контроллера приложения, когда мне нужны мои методы для доступа к данным контроллера (например, параметры и т. д.). –