我们的控制器下有application.rb的通用日志记录功能。虽然活动作业找不到这个功能(我假设是因为我们的电子邮件作业扩展了ActiveJob :: Base vs我们的控制器,引用ActionController然后引用ActionController :: Base)
正确的地方放置日志记录功能,以便我们可以保留尽可能干的代码?
答案 0 :(得分:1)
所以在与其他人讨论之后,最好的课程是通过使用lib文件夹并在其中创建模块来决定的。
我们创建了一个名为trackers的文件夹和一个名为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/
)
在Controller或ActiveJob的方法中,它被称为 -
Trackers.track_action("eventName", {
"someVar" => "someValue",
})
另一种选择是使用模型,但我觉得这更像是一个lib函数 - 我们可能会在以后把它变成一个宝石。
希望将来能帮助其他人。