写点什么

应用 MOle 插件

深入浅出 Rails

  • 2007-08-16
  • 本文字数:2737 字

    阅读完需:约 9 分钟

沉寂的圆锥

现今许多公司都趋向于声明他们对于敏捷过程的十二分忠诚。我们经常长时间地进行 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
    <span color="#006600">MOLE</span> = File.<span color="#6666cc">new</span>( "<span color="#006699">#{RAILS_ROOT}/config/mole.conf</span>" )<br></br><span color="#006600">MOLEABLE_APP</span> = true<br></br><span color="#006600">MOLE_PERF_MAX_TIME</span> = 5应用程序中所有被探测的动作都是由 mole.conf 文件设置的。一个 mole.conf 文件的样例在安装插件时已经被安装到 config 文件夹中。你可以通过 MOLEABLE_APP 来控制插件是否工作。MOle 的一个内建的特性是用来记录一些较长的操作。我们将会在后面提到它。最后一个变量将会对创建的性能进行设置,这里是 5 秒。
  3. 加载 MOle 配置在 ApplicationController 中添加如下代码:

<span color="#3399ff">load</span><span color="#006600">MOLE</span>.<span color="#6666cc">path</span> <span color="#3399ff">if</span>File.(<span color="#3399ff">MOLE</span>.<span color="#6666cc">path</span>) <span color="#3399ff">and</span> <span color="#006600">MOLEABLE_APP</span>上面的代码将会加载一个用于说明如何探测你的 rails 应用程序的配置文件。只需一个文件即可,不需要在你所有的控制器代码中处处进行说明。在配置文件中仅仅需要简单的指明 MOle 应该在什么地方和捕获什么特殊的事件。
4. 探测一个控制器事件: MyController.<span color="#6666cc">before</span>( <span color="#006600">:feature</span> => <span color="#006600">:show</span> ) do |context, feature, args|<br></br>   Mole::DbMole.<span color="#6666cc">mole_it</span>( context, feature, context.session[<span color="#006600">:user_id</span>],<br></br>       <span color="#006600">:some_var</span> => context.<span color="#6666cc">instance_variable_get</span>('@myVar'))上面的代码将会在 show 事件被调用之前探测 MyController 的 show 事件,并将控制器的 myVar 状态记录到数据库中。因此,我们不仅可以记录事件是否被调用,还可以记录与该调用相关联的状态。

或者……
MyController.<span color="#6666cc">after</span>( <span color="#006600">:feature</span> => <span color="#006600">:show</span> ) do |context, feature,ret_val, args|<br></br>   Mole::DbMole.<span color="#6666cc">mole_it</span>( context, feature, context.session[<span color="#006600">:user_id</span>],<br></br>       <span color="#006600">:some_var</span> => context.<span color="#6666cc">instance_variable_get</span>('@myVar'), <span color="#006600">:return</span> => 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 也倾注了一定的精力。大部分时间在学校从事一些理论研究,工作之余关注开源软件的进展。

2007-08-16 04:141657

评论

发布
暂无评论
发现更多内容

你可能不知道,自动化元数据管理的“七宗最”?

雨果

元数据

开源无界 携手共创|观测云参加 SUSECON 2022 北京开源技术峰会

观测云

头脑风暴:最长连续递增序列

HelloWorld杰少

算法 LeetCode 数据结构, 8月月更

开源一夏 | 实战Node.js之GET/POST请求在Web 应用架构在客户端的使用

恒山其若陋兮

开源 8月月更

从一条更新SQL的执行过程窥探InnoDB之REDOLOG

京东科技开发者

MySQL 数据库

阿里云ECS之MySQL基础操作

六月的雨在InfoQ

MySQL ECS 8月月更

架构实战营|模块9

KDA

#架构实战营

知识库如何进行定期检查?

Geek_da0866

架构实战营|毕业总结

KDA

#架构实战营

详解CAN总线:常用CAN连接器的使用方法

不脱发的程序猿

汽车电子 嵌入式开发 CAN连接器

智能化运维场景分析

阿泽🧸

智能运维 8月月更

哪些数据被纳入元数据管理的范畴?

雨果

元数据

一次minerd肉鸡木马的排查思路

京东科技开发者

安全 木马病毒

《Dubbo3.0.8源码解析》15-Dubbo的三大中心之元数据中心源码解析

宋小生

dubbo Dubbo3

LabVIEW LINX Toolkit控制Arduino设备(拓展篇—1)

不脱发的程序猿

嵌入式 单片机 LabVIEW Arduino LINX Toolkit

阿里云AIoT物联网平台技术集锦

阿里云AIoT

数据挖掘 运维 监控 物联网 消息中间件

聊聊 npm 的语义化版本(Semver)

冴羽

JavaScript 前端 npm 项目开发 semver

开源一夏 | 阿里云ECS之Linux 文本操作命令

六月的雨在InfoQ

vim Linux 开源 8月月更 more

物联网平台如何支持设备的多样化接入——设备接入类

阿里云AIoT

网络协议 存储 数据采集 JSON库 传感器

Spring进阶(一):SpringMVC常用注解标签详解

No Silver Bullet

springmvc 注解 8月月更

IPv4向IPv6的过渡技术

穿过生命散发芬芳

ipv6 8月月更

开源一夏 | 阿里云ECS之Linux 系统工作命令

六月的雨在InfoQ

Linux 开源 8月月更 系统命令

加密市场由阴转晴,Zebec或成2022后半段黑马

鳄鱼视界

开源一夏 | 阿里云ECS之Linux 文件管理命令

六月的雨在InfoQ

Linux 开源 8月月更 文件管理命令 磁盘命令

坚叔:让科幻片的概念变成产品丨编程挑战赛 x 嘉宾分享

RTE开发者社区

人工智能 编程‘

开源一夏|三步注册gitee

坚果

开源 8月月更

详解CAN总线:什么是CAN总线?

不脱发的程序猿

嵌入式 汽车电子 CAN总线协议

文件管理-Linux系统文件属性

Albert Edison

Linux centos 运维 文件管理 8月月更

C++多态的基本概念与原理刨析

CtrlX

c c++ 面向对象 代码 8月月更

聚焦2022全球边缘计算大会·深圳站,揭秘火山引擎新一代边缘云解决方案

火山引擎边缘云

分布式 CDN 边缘计算 渲染 边缘云

6.18秒杀系统架构设计

joak

应用MOle插件_Ruby_Fernand Galiana_InfoQ精选文章