`
woody_420420
  • 浏览: 42130 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论
文章列表
    一天又一天,随着我们不断增加测试代码,运行整个项目的测试耗时也越来越长, 2,30分钟成了家常便饭. 怎么样才能提高测试的速度,真正发挥持续集成的作用呢?并行测试!下面介绍两个我最近了解的比较cool的并行测试lib. 有这方面更好经验的同学,希望能给点意见.     deep-test     http://github.com/qxjit/deep-test/tree/master     貌似出自ThoughtWorks同学们之手. 从readme里可以看出,这是一个十分强悍的并行测试库.以下两点功能挺诱人:     1. 只需一行配置, 便可以为每个测试Agent自动生成测试数 ...
  Rack是一个高效,简洁的框架(Webserver Interface)。其设计架构十分简单,如下图所示:    (图片来源:http://amberbit.com/blog/2009/04/04/introduction-to-rack-middleware/)   图中的每个Module都可以说是一个Middleware。并且这个类似stack的结构可以“堆积”更多的Middleware。railscasts曾发过一个ResponseTimer Middleware,用来查看一个Rack请求的响应时间。最近利用ResponseTimer的原理,写了一个MiddlewareProfi ...
  有些时候,我们可能需要记录某些列的更新时间,类似于rails的timestamps。手工一一处理稍显繁琐,于是将其抽取出来,写成了一个简单的plugin--column_timestamp,自动记录一些简单列的更新时间。   使用方法   1.将column_timestamp放到plugins目录。   2.在表中针对要记录更新时间的列建立一个新列:[column_name]_updated_at。   3.或者,在migration中使用:column_timestamp => true参数。例如: def self.up create_table :my_table ...
  各位同学对model中一坨坨的 validates_presence_of :name, :link   之类种种的代码不会觉得陌生。在执行save,update操作,rails会自动执行validation操作,并将错误信息存放在Model#errors中。通常,对于一般web程序来将,这就够了。我们可以 ...
  今天,用ruby写一段执行文件上传的post代码的时候,我写下如下代码: require 'net/http' require 'uri' url = URI.parse('http://myserver/services/upload.xml') req = Net::HTTP::Post.new(url.path) req.basic_auth 'username', 'password' req['content-type'] = 'multipart/form-data;boundary=bbb' ...... req.body = %Q{--bbb Content-Dispos ...
  通常,在rails中处理文件上传,我们会这么做,在view中生成相应html tag: <input name="my_uploaded_file" type="file">   然后,在controller中,我们可以通过params[:my_uploaded_file]得到上传文件,进行相应处理。  假如,现在作为controller的开发人员,我不知道view开发人员将input的name设置成什么?那应该如何处理呢?可能这个例子有些极端,绝大部分时候不存在这个问题。那再假如,现在我们要利用rails实现一个api,该api的功能是实 ...
前言   本文提到的typo版本是目前最新的5.0.3.98.1,theme_support版本是1.3.0。在typo中,我们看到了很好很花哨的换肤机制,而theme_support则是从typo中抽取出来的一个plugin,以供其他程序进行换肤操作。  先简单介绍下typo换肤的使用。typogarden提供了typo十分丰富的皮肤,我们只需要下载喜欢的皮肤,解压,放在typo程序根目录的theme目录下即可,大致的结构图如下所示:  然后,就可以在admin界面选择自己的皮肤。的确十分方便。但是,使用这种机制,会存在一个严重的性能问题,下面将详细分析问题的原理及其我目前所知的解决方 ...
  几乎所有的现代编程语言都提供了&&操作符,ruby也不例外。我想每个人都知道&&的用法。但是在ruby中,利用&&可以实现一些“诡异”的用法,如下例子:   1. 基于这样一个事实:几乎ruby中的所有expression都有 ...
  不管你是用c,c++,c#,java。。。不管你是用循环,递归,lambdas。。。我保证,你写的斐波拉契数列生成算法,没有用ruby写来得简洁: x,y = 0,1 Array.new(10) {|i| [0,1].include?(i) ? 1 : (x,y = y,x+y)&&(x+y) } #=>[1, 1, 2, 3, 5, 8, 13, 21, 34, 55]   不懂的语言不敢保证~呵呵    
  当我们使用jquery的时候,如果要动态修改某一元素的属性,比如一个button的onclick属性,我们会很容易的写出如下代码:   $(“#some_element”).attr('onclick',"//some new operation");   但是这段代码在FireFox下会按我们的意图正确执行,但是在IE下什么动静都没有。关于问题的描述,可以参考:   http://www.nabble.com/onClick-prepend-td15194791s27240.html   http://ajaxian.com/archives/evaling-with- ...
  近日,由于git-svn不支持remote branch的合并(没想到啊~没想到!),便试用了几款linux下的svn gui工具,打算专门用来做branch之间的合并用。目前,试用了如下几种:rapidsvn,kdesvn,esvn。     1. rapidsvn   本认为rapidsvn是最好用的,但是玩了半天觉得不尽人意。首先,ubuntu的源里面尽然只有0.9.4-3这个版本,似乎是06年的release,小小郁闷了一把,为了图方便,懒得去下最新版本来自己make,就凑合着用这个版本。   缺点:在ubuntu8.0.4下面,last changed列居然是乱码,或许是字符集的问 ...
  mocha是ruby下的一个mock框架。   关于mock object的相关信息,请参考:http://www.mockobjects.com/   关于mocha的相关信息,请参考:http://mocha.rubyforge.org/   基本概念及使用方法这里不谈,就谈谈最近在mocha碰到的两个小陷阱。     1.情 ...
前言   经过一番试验和考虑...一,我尝试了一些思维导图工具(MindMapper,FREEMIND),但我始终没有找到一种好的方式将自己学习Rails源代码的思路表述出来,就此作罢(顺便问问,有研究思维导图的同学么?能否推荐两个自 ...
前言   在《Routing的载入》中,我大致介绍了一下Rails中最简单的route是如何加载的。这篇文章,我将来讲一讲Rails系统中更为复杂的named route和与RESTful相关的resource是如何被加载的。为了不重复太多的笔墨,这篇文章将在前文的基础上进行,如果发现单独看此文时,有少许云里雾里,建议先看一看我的前篇文章:Ruby On Rails-2.0.2源代码分析(2)-Routing的载入 进化的routing-named route   首先,named route的载入全部发生在routing.rb中。其实named route一点也不比普通 ...
  这两天,在调试Rails的时候,碰到一个极度奇怪的问题,困扰了我足足两天,实在让我头晕脑胀,耳晕目眩。。。。。。具体情况描述如下:   Rails框架的某一个地方使用了ActiveSupport::OptionMerger类,比如:ActiveSupport::OptionMerger.n ...
Global site tag (gtag.js) - Google Analytics