写点什么

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

评论

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

网站开发进阶(一)Tomcat域名或IP地址访问配置详解

No Silver Bullet

tomcat 网站建设 5月月更

linux之秘钥登录

入门小站

Linux

在线Excel转JSON工具

入门小站

工具

手撕阿里 Spring 框架:AOP、IOC、注解、事务,带你统统拿下

Java架构追梦

Java spring 程序员

关于人才的招聘的一些看法(31/100)

hackstoic

团队管理 招聘

pinpoint插件开发之二:从零开始新建一个插件

程序员欣宸

Java 分布式 4月月更

nginx配置系列(三)日志配置

乌龟哥哥

4月月更

2020年底跳槽面试5家大厂,最后收获拼多多Java岗offer,分享三面总结!

爱好编程进阶

Java 程序员 后端开发

[Day31-04]-[二叉树]二叉树的堂兄弟节点

方勇(gopher)

LeetCode 数据结构和算法

2020面试官会经常问到的三个并发工具类,你都知道吗?

爱好编程进阶

程序员 后端开发

决战摸鱼之巅:将vscode撸成可局域网联机对战的moba平台

gamedilong

前端 vscode nodejs Node 摸鱼

阿里架构师耗时 176 天整理出来的 Java 独家面试题(10 万字面试总结)

Java架构追梦

程序员 java面试 后端开发

C++类设计和实现的十大最佳实践

俞凡

c++ 最佳实践

移动办公安全告急?融云 x 海泰方圆,给即时通讯加把「安全锁」

融云 RongCloud

Sentinel集群限流探索

艾小仙

sentinel 分布式限流 集群

高精度在线计时器(秒表)

入门小站

工具

Gitea 的简单介绍

HoneyMoose

架构实战营作业四

库尔斯

#架构实战营

架构训练 模块4作业

小马

「架构实战营」

[Day32]-[二叉树]二叉树中的最大路径和

方勇(gopher)

LeetCode 二叉树 数据结构和算法

[Day31-03]-[二叉树] BST树中的众数

方勇(gopher)

LeetCode 数据结构和算法

2021年九月最新Java面试必背八股文,338道最新大厂架构面试题

爱好编程进阶

Java 程序员 后端开发

2021最强面试笔记非它莫属:3000字Java面试核心手册(大厂必备

爱好编程进阶

Java 程序员 后端开发

Java 从一个 List 中删除 null 元素

HoneyMoose

在 ABAP 技术栈里实施 Continuous Integration 的一些挑战

汪子熙

DevOps 持续集成 abap 5月月更 持续优化

11-SpringSecurity:Session共享

爱好编程进阶

Java 程序员 后端开发

2020最新版Java学习路线图--妈妈再也不用担心我误删数据库被开除了

爱好编程进阶

Java 程序员 后端开发

2021最新一次Java面试,快手三面一轮游,如今已拿意向书

爱好编程进阶

Java 程序员 后端开发

2021最新分享字节四面成功拿Offer!

爱好编程进阶

Java 程序员 后端开发

vivo X80系列高端爆款之路:火把照耀在无人区

脑极体

GitOps指南

俞凡

DevOps gitops

应用MOle插件_Ruby_Fernand Galiana_InfoQ精选文章