BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

应用MOle插件

| 作者 Fernand Galiana 关注 0 他的粉丝 ,译者 张立 关注 0 他的粉丝 发布于 2007年8月17日. 估计阅读时间: 8 分钟 | CNUTCon 了解国内外一线大厂50+智能运维最新实践案例。

沉寂的圆锥

现今许多公司都趋向于声明他们对于敏捷过程的十二分忠诚。我们经常长时间地进行SCRUM会议,希望能尽快地交付产品,我们经常……可是我们如何真正衡量这些应用程序是成功了还是一堆垃圾呢?我们都知道页面点击量和图表在供货商以及一些博士眼中的重要性……我们应该如何评估应用程序中的“必要”特性是否被用户使用和如何被用户使用的呢?更重要的是,我们如何准确地评估我们是否位于一条通向成功产品和公司的康庄大道上呢,还是我们仅仅是在挖开另一个无底洞?

以上的问题激发了MOle的基本想法。最近我也曾处于应用即将交付的阶段。应用程序中的特性非常丰富,代码被完整地测试,而服务器不间断地运行着。我们被产品的需求奴役了很长时间。其中的一个特性是一个美妙的基于Ajax的滑动条,它可以允许用户根据一些排序算法设置自定义的内容显示。我们不禁要问,用户会使用这个功能吗?如果他们使用,将会如何使用呢?可以肯定,花费几千美元可以找到一些志愿者,进行一些实验,或许会对我们的问题给出一些帮助。可是谁可以忍受这样地时间和金钱上的耗费呢?因此,我们需要一些办法来记录这些数以千计的各种各样的操作,探测这些特性,记录这些事件,这样我们就可以建立基于这些特性的测量和报告。我们在应用程序中需要一个代理来做这些事情(探测这些特性和记录需要的事件)。MOle允许我们收集用户的输入。它给我们提供了必要的回馈用于对下次的迭代进行调整。同样,它也指出了一些在我们的需求文档中被列为“必须”的需求,而实际上完全没有被用到的情况。同样,MOle在评价我们的测试团队在测试环节的覆盖率和有效性方面也有一定的作用。

让我们开始吧

期望现在已经激起了你的欲望,下面是几个MOLe你的应用的必经步骤:

  1. 下载插件:
    ruby script/plugin install svn://rubyforge.org/var/svn/liquidrail/plugins/mole/trunk
    在安装的过程中,插件将会在数据库中创建两个表,分别为mole_features和mole_logs

  2. 在config/environment.rb中设置MOle
    MOLE = File.new( "#{RAILS_ROOT}/config/mole.conf" )
    MOLEABLE_APP = true
    MOLE_PERF_MAX_TIME = 5

    应用程序中所有被探测的动作都是由mole.conf文件设置的。一个mole.conf文件的样例在安装插件时已经被安装到config文件夹中。你可以通过MOLEABLE_APP来控制插件是否工作。MOle的一个内建的特性是用来记录一些较长的操作。我们将会在后面提到它。最后一个变量将会对创建的性能进行设置,这里是5秒。

  3. 加载MOle配置

    在ApplicationController中添加如下代码:
    loadMOLE.path ifFile.(MOLE.path) and MOLEABLE_APP 

    上面的代码将会加载一个用于说明如何探测你的rails应用程序的配置文件。只需一个文件即可,不需要在你所有的控制器代码中处处进行说明。在配置文件中仅仅需要简单的指明MOle应该在什么地方和捕获什么特殊的事件。

  4. 探测一个控制器事件:
    MyController.before( :feature => :show ) do |context, feature, args|
      Mole::DbMole.mole_it( context, feature, context.session[:user_id],
          :some_var => context.instance_variable_get('@myVar'))

    上面的代码将会在show事件被调用之前探测MyController的show事件,并将控制器的myVar状态记录到数据库中。因此,我们不仅可以记录事件是否被调用,还可以记录与该调用相关联的状态。

    或者……
    MyController.after( :feature => :show ) do |context, feature,ret_val, args|
      Mole::DbMole.mole_it( context, feature, context.session[:user_id],
          :some_var => context.instance_variable_get('@myVar'), :return => ret_val))

    与上述代码基本相同,但是是在事件被调用之后进行记录。

  5. 就是这样了!

支持控制台

.我们还捆绑了一对控制台用于即时查看MOle的情况:Snitch和Yahoo! Widget MOlet

Snitch代码可以在以下地址下载:

svn://rubyforge.org/var/svn/liquidrail/plugins/mole/samples/consoles/snitch

下载完毕后,用如下的命令来完成安装:

ake setup

上述命令将告诉应用程序如何通过用户数据库表名来访问用户模型,以及通过数据库表的列来显示用户名。同样,可能需要编辑database.yml文件来指明数据库名称。不过不用担心应用程序会改动你的数据库。

为了运行另一个面板程序,需要安装Yahoo! Widget Engine,然后下载MOlet并将其保存到面板目录中。(MAC:Documents/widgets,Windows:Document And Setting/user/widgets)

svn://rubyforge.org/var/svn/liquidrail/plugins/mole/samples/consoles/widgets/molet

总结

感谢您驻足观看关于MOle的一点介绍。无论你是否有着固定的需求,还是考虑如何能便捷地在WeightWatcher中寻找一块匹萨,我们希望你找到你的出发点。我们希望看到你关于MOle的感受,我们将会尽我们最大的努力来帮助你。欢迎您提出有关于帮助我们改善MOle的任何意见或建议。

资源

关于作者

Fernand Galiana是Imhotep Software LLC的拥有者,这是一家关于Rails应用的咨询与培训公司,位于科罗拉多的丹佛。他拥有15年的用户界面和中间层软件开发经验,同样他也是ZiYa(一个rails的绘图插件)的作者。他目前在丹佛Rails用户组中(aka DeRailed)。

查看英文原文:The MOle Plugin
译者简介:张立,博士研究生,喜欢新技术,新思想。经历了一些企业级软件开发后,逐渐将兴趣转向C#和JAVA的企业级应用。同时对动态语言的发展非常关注,喜欢用Python进行一些计算,对Ruby也倾注了一定的精力。大部分时间在学校从事一些理论研究,工作之余关注开源软件的进展。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT