写点什么

应用 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:141103

评论

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

Elasticsearch中的Term查询和全文查询,重磅

Java 程序员 后端

Docker Swarm从部署到基本操作,Java程序员进大厂面试必备基础技能

Java 程序员 后端

Docker下Nacos配置应用开发,java初级程序员面试

Java 程序员 后端

各地力推“链长制”,区块链让产业链更加安全可靠

CECBC

Elasticsearch聚合的嵌套桶如何排序,java架构和框架

Java 程序员 后端

【死磕Java并发】-----Java内存模型之happens-before

chenssy

11月日更 死磕 Java 死磕 Java 并发

Elasticsearch 如何做到快速检索 - 倒排索引的秘密,springboot项目实战

Java 程序员 后端

Elasticsearch中URI Search和RequestBody Search分析(1)

Java 程序员 后端

ELK + Filebeat + Kafka 分布式日志管理平台搭建,最新java面试题及答案

Java 程序员 后端

Flink的sink实战之四:自定义,Java开发笔试题目

Java 程序员 后端

Geospatial-地理空间,java面试基本知识

Java 程序员 后端

【高并发】两种异步模型与深度解析Future接口

冰河

Java 并发编程 多线程 高并发 异步编程

Dubbo服务治理之灰度发布方案(版本发布控制影响范围)

Java 程序员 后端

Redis 实现附近的人,全靠 GEO 数据结构让我邂逅女神

码哥字节

redis BitMap geohash NoSQL 数据库 11月日更

【Promise 源码学习】第二篇 - Promise 功能介绍与特性分析

Brave

源码 Promise 11月日更

Flink处理函数实战之一:深入了解ProcessFunction的状态(Flink-1

Java 程序员 后端

WEB本地存储:localStorage、Web SQL Database、IndexedDB

devpoint

Cookie indexedDB LocalStorage sessionStorage 11月日更

Docker系列(1)--Docker原理及安装,java线程池回收原理

Java 程序员 后端

Dubbo如何支持本地调用?InJvm方式解析,农民工看完都会了

Java 程序员 后端

进击的Java(一)

ES_her0

11月日更

Windows11 搭建openvino_tensorflow环境

IT蜗壳-Tango

IT蜗壳 OpenVINO 11月日更 openvino_tensorflow

Flink SQL Client综合实战,深入理解java虚拟机百度云

Java 程序员 后端

flume基本概念与操作实例(常用source),kalilinux视频教程

Java 程序员 后端

迎接央行数字货币,你准备好了吗

CECBC

Dubbo服务消费者调用过程,35岁老年程序员的绝地翻身之路

Java 程序员 后端

讲分布式唯一id,这篇文章很实在

秦怀杂货店

Java 分布式 分布式ID

Elasticsearch聚合的嵌套桶如何排序(1),java大学基础教程

Java 程序员 后端

ElasticSearch集群的概念及搭建过程,Java程序员晋升路线

Java 程序员 后端

Docker下,五分钟极速体验机器学习,java从入门到精通第五版防盗码

Java 程序员 后端

所谓的新型“数字人民币”诈骗,这里有几个疑点

CECBC

ELK太重?试试KFC日志采集,2021大厂Java面试经验

Java 程序员 后端

应用MOle插件_Ruby_Fernand Galiana_InfoQ精选文章