Rails的类变量替代?

时间:2013-02-02 03:07:39

标签: ruby-on-rails

我们需要找到一个存储页面指标的好地方作为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

2 个答案:

答案 0 :(得分:1)

这种做法的问题在于,只有班级,统计数据才会存在。我建议写一个数据库,甚至是Redis。

您还可以使用this Railscast

中显示的技术订阅这些事件,以便代码不在您的控制器中

答案 1 :(得分:1)

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