0

我们需要找到一个在 Rails 页面加载时存储页面指标的好地方。它将包括统计数据,最初使用某些慢速方法的次数。目前我们在 ApplicationController 上使用了一个类变量,但这看起来像是代码异味。有一个更好的方法吗?

class ApplicationController < ActionController::Base
  cattr_accessor :page_stats

  def increment_slow_stuff()
    @@page_stats ||= {}
    @@page_stats[:slow_stuff] ||= 0
    @@page_stats[:slow_stuff]  += 1
  end

  def slow_method()
    increment_slow_stuff()
    ...
  end
end
4

2 回答 2

1

这种方法的问题在于,只要班级存在,统计数据就会存在。我建议写入数据库甚至 Redis。

您还可以使用此 Railscast中显示的技术订阅这些事件,以便代码不在您的控制器中

于 2013-02-02T03:09:44.277 回答
1

为什么不使用实例变量?如果您以后需要将其存储更长时间,您可以随时在页面浏览的末尾保存一条记录。此外,PageStats 模型可以让您对指标进行更高级的分析。

于 2013-02-02T03:11:25.323 回答