Итак, после некоторого разговора с другими, лучший курс был решен с помощью папки lib и создания модуля внутри него.
Мы создали папку с трекерами и файл с именем tracker.rb. Ниже приведен основной фрагмент того, что он выглядит как
module Trackers
module_function
mattr_accessor :controller
def track_action(event_name, event_params)
event_params["time"] ||= Time.now.utc.to_i
# Controller scope only - this only gets executed if the function is called via a controller vs an ActiveJob
if controller
event_params["controller_name"] ||= controller_name
event_params["action_name"] ||= action_name
end
#Other stuff redacted
end
end
В файле application.rb мы изменили код, чтобы включить папку как таковые:
config.autoload_paths += %W(
#{config.root}/lib/
#{config.root}/lib/trackers/
)
внутри метода в контроллере или ActiveJob его называется как таковой -
Trackers.track_action("eventName", {
"someVar" => "someValue",
})
Другая альтернатива использует модель, но я чувствовал, что это гораздо больше Lib функции - мы можем превратить его в драгоценный камень позже.
Надеюсь, что это поможет другим в будущем.