50万奖金+官方证书,深圳国际金融科技大赛正式启动,点击报名 了解详情
写点什么

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

评论

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

时间是最大的变量

石君

时间 28天写作

SpringCloud 从入门到精通 13---Nacos集群搭建

Felix

智汇华云 | ArcherOS Stack利旧FC-SAN存储

华云数据

存储

Soul 学习笔记---数据同步 websocket 连接建立过程分析(五)

fightingting

Soul网关

【CSS】画三角形(8个角度及其原理)

德育处主任

CSS html5 大前端 CSS小技巧 28天写作

[讨论]几个能有效应对 35 岁危机的办法

穿甲兵

招投标挖坑、防坑指南

tob 招标 投标

迟到的年度总结-数据的人生

松子(李博源)

大数据 数据中台 总结 年度总结

对容器镜像的思考和讨论

阿里巴巴云原生

Docker 容器 开发者 云原生 CloudNative

“数据库网络故障”愁坏了头,五种方法带你解难题

华为云开发者联盟

数据库 数据 GaussDB 网络故障 丢包

豆瓣9.5分,它是Scala领域当之无愧的王者之作!

博文视点Broadview

scala 编程语言 豆瓣高分

如何 3 步一键部署开源容器应用?

binggg

Docker 开源 Serverless 云开发 应用

合约交易APP系统开发|合约交易软件开发

系统开发

即构✖叮咚课堂:行业第一套AI课堂解决方案是怎么被实现的?

ZEGO即构

C2C场外交易系统APP开发|C2C场外交易软件开发

系统开发

15个国内外最受欢迎的YouTube视频下载器

科技猫

youtube视频下载 油管视频下载 下载youtube视频 下载油管视频 视频下载器

详解MySQL执行事务的语法和流程

华为云开发者联盟

MySQL 数据库 事务 服务器 SQL语法

NanoDet:这是个小于4M超轻量目标检测模型

华为云开发者联盟

PyTorch 目标检测 yolo nanodet

谈谈统计学正态分布阈值原理在数据分析工作中的运用

vivo互联网技术

大数据 正态分布 核心

2020年中国DevOps应用发展研究——艾瑞咨询报告总结

禅道项目管理

DevOps 行业资讯 趋势

大数据知识专栏 -MapReduce 自定义计数器技术

小马哥

大数据 mapreduce 七日更

uni-app的发展和应用

anyRTC开发者

uni-app 音视频 WebRTC sdk 安卓

透过现象看本质:Java类动态加载和热替换

华为云开发者联盟

Java JVM 插件 类加载器 热替换

长文攻略|如何打造一键部署的云开发应用

binggg

小程序 大前端 全栈 开发应用 云开发

比特币矿机工作原理

v16629866266

Apache Flink 在实时金融数据湖的应用

Apache Flink

flink

两万字长文总结,梳理 Java 入门进阶那些事

程序员小跃

Java redis 架构 后端 面向对象编程

交易所APP系统软件开发案例

系统开发

20 行代码:Serverless 架构下用 Python 轻松搞定图像分类和预测

阿里巴巴云原生

人工智能 机器学习 深度学习 Serverless 云原生

基于 KubeEdge 和 Kuiper 的边缘流式数据处理实践

华为云原生团队

数据库 云原生 边缘计算 华为云 边缘技术

简单五步:利用Gitstats给代码仓库做一次体检

后台技术汇

28天写作

应用MOle插件_Ruby_Fernand Galiana_InfoQ精选文章