Рядом с ответами здесь вы также можете сделать следующее:
module Prober
class << self
def probe_invoke(type, data = {})
p = Probe.new({:probe_type => type.to_s,
:data => data.to_json, :probe_status => 0, :retries => 0})
p.save
end
# more module instance methods ...
end
end
Блок class << self
определит также каждый метод в нем как методы экземпляра вашего модуля.
(Его функциональность аналогична определению всех методов с помощью def Prober.mymethod ...
или def self.mymethod ...
)
Обновление (2014-11-22)
Согласно руководству по стилям Ruby вы следует использовать module_function
вместо:
module Prober
module_function # <-- preferred style nowadays
def probe_invoke(type, data = {})
Probe.new(probe_type: type.to_s,
data: data.to_json,
probe_status: 0,
retries: 0)
.save # no need for a temporary variable
end
# more module methods ...
end
Я бы назвал это служебными модулями .
Кстати: в прошлом это было большеОбычно используется extend self
вместо переноса методов в блок class << self
.
Я также адаптировал приведенный выше код к другим рекомендациям руководства по стилю.