如何在Rails 3中查看用户的实时活动?

时间:2011-02-26 07:31:53

标签: ruby-on-rails ruby-on-rails-3

我想做的是让我的管理员用户能够实时看到(通过一些AJAX / jQuery的好处) - 我的用户正在做什么。

我该怎么做?

我认为它与会话活动有关 - 我已经开始将会话保存到数据库,而不是cookie。

但一般来说,我如何获取该信息并实时解析?

我查看了会话表,除了ID(id和session_id)之外,我看到了一个'数据'字段。该数据字段存储一个哈希 - 我无法理解(看起来像md5哈希)。

我如何使用它来看到用户A刚刚点击链接B,然后用户B点击链接A等等?

有没有宝石 - 除了rackamole - 可能能够帮助我吗?

3 个答案:

答案 0 :(得分:4)

您可能想查看Mixpanel。它们易于设置并具有您要求的一些功能。

答案 1 :(得分:2)

会话数据仅包含存储在用户的session[] - 哈希中的值。它不存储调用的操作/控制器,因此您不知道哪个“链接被点击”。

获取用户的活动:

除了Rackamole,你有两个选择恕我直言。

  • 使用before_filter中的ApplicationController来存储您感兴趣的相关信息。(控制器名称,操作或URI,其他参数和登录用户的ID,例如)。

  • 在每个页面底部使用AJAX调用,将您感兴趣的信息(URI,登录用户的ID等)发回服务器。这样可以缩短服务器的响应时间,因为信息是在页面传送完成后存储的。另外,您不必使用Rails请求来存储它。 AJAX请求也可以调用一个简单的PHP脚本将数据写入磁盘。这要快得多。

存储此活动:

将此数据/信息存储在数据库或日志文件中。数据库将提供更多灵活性,例如显示来自一个用户的所有操作,或显示一个页面的所有访问者等。日志文件解决方案将为您提供更好的性能。

Realtime vs. Oldschool:

至于实时提取收集的数据,您必须构建自己的解决方案。要优雅地执行此操作(无需每秒查询一次服务器以查看新数据是否已到达),您将需要另一个服务器进程。 Search for AJAX Push了解更多信息。

根据您的应用程序,我会问自己是否真的需要实时通知(因为设置它的所有麻烦)。

要监控您网站上的活动,应该有一个列出最新操作的页面并手动刷新(或每十秒自动刷新一次)。

答案 2 :(得分:1)

也许你可以测试https://github.com/raid5/acts_as_scribe#readme 它也适用于Rails 3。