2008-07-03

rspec行为驱动测试中model数据的设计策略

关键字: rspec 数据 fixtures
rspec行为驱动测试对数据fixtures使用了convention over configuration策略,一个文件名对应一个表,方便了数据测试前的导入,但是当测试用例涉及的表数量多、表与表之间关系复杂、级联关系比较深的情况下,会发生某些公用数据在多个测试用例中被多次使用的情况,如果测试用例间存在制约关系,比如某个测试用例A是要考察某记录类型的个数,另一个测试用例B对公用数据的使用(新增或者修改记录属性)过程中改变了A的结果,这会使测试用例A发生失败,如果关联度高和复杂的情况下,这种失败几乎是雪崩式的,会使得问题的纠正变得比较复杂,因此为了避免这种情况的发生,如何对测试数据进行设计其策略 ...
2008-06-11

易在开发中忽略的rails安全问题

关键字: rails 安全
有些安全问题在rails的开发中会被忽略的,比如rails在创建或者更新一个model的时候,支持一种mass-assignment的赋值方式,比如在controller中,创建一个user model记录 代码1: @user=User.new(params[:user]) @user.save! 这个场景通常发生在网站注册新用户,假如user有属性用户积分point,注册表单如是写: <form ..> <input name='login_name'/> <input type='password' name='password'/> < ...
2008-06-11

用builder写xml

关键字: ruby builder xml
很简单,Builder负责生成xml,通过ruby的io输出到指定xml文件。 代码: require 'builder' Person=Struct.new("Person",:name,:age) people=[] people << Person.new("a",33) people << Person.new("b",22) xml=Builder::XmlMarkup.new :indent=>1 xml.instruct! xml.people do people.each do |p| xml.person do ...
爽这个字不知道从何年开始成为了口头禅,根据实际开发中的体会,打算总结几个用rails开发web应用几个比较爽的地方,这里先说明,本人之前乃至现在都是做java开发的,有几个年头了,这里不想打着'xx vs. xx'的旗号,以免引发唾沫之争,不利于在奥运之年影响群众们的身心健康。以下是对爽的几个罗列,纯粹是无心快语,心之所至,言之所发,列位看官请look: 引用 - 代码生成,你可以scaffold一溜儿,看着m阿v阿c啊t(test)啊这些目录和代码文件一大串儿的从屏幕上方滚动直下,犹如尼加拉瓜大瀑布,此一爽 - 魔术般语法,简洁的语句,犹如大话西游大圣梦醒后听到三藏打个响指说了个‘走’一般 ...
2008-05-28

Rails的表单helper: select

关键字: rails form select
rails的actionviews提供了友好的form builder类来简洁的动态生成表单元素,相比于简单的textfield,select helper有一些特别,传入参数较多,根据rails的api文档,对select的使用说明如下: 引用 select(object, method, choices, options = {}, html_options = {}) object是指select选项所修饰的目标对象,method是目标对象的属性(方法)名, choices是一个数组,包含了选择项的‘name-value’值,options和html_options是选项。以per ...
2008-05-27

关于正则表达式

关键字: regular expressions 正则 表达式
"An understanding of regex handling greatly benefits the modern programmer. A complete discussion of this topic is far beyond the scope of this book, but if you're interested see the definitive work Mastering Regular Expressions by Jeffrey Friedl." 对正则表达式处理的理解极大帮助了现在的编程人员,对这个专题完整的讨论超出了本书范畴,但是如果您有兴趣 ...
2008-05-14

在console中强制class reloading

关键字: class reload
ror开发的一个强势就是其解释性勿须编译,对源文件的更改可以立即体现在运行中,当启动rails应用之后,可以运行ruby script/console对应用进行即时调试,比如对model进行query测试,检验find查询的语句编写和结果查看,好处是不用打开数据库控制台就可以进行数据库编程,在检查查询的同时也校验了程序的编写,提高了开发效率。最近在开发当中遇到个问题,就是development mod下启动rails应用之后,在console中做调试时发现对源文件的修改并不能立即生效,检查config/environments/development.rb配置,config.cache_cla ...
2008-05-06

ruby编程百宝箱——ruby cook book

关键字: ruby cook book
书跟人一般,也有性格特点,人的本事不一,书的作用也一样,可以运用在不同场合,在实际编程当中,你会遇到各种问题,比如小至处理一个字符串或者日期,大至写写webservice或者搞个守护进程,这个时候你手边阐发精深思想的“圣经”类书籍未必能发挥作用,因为你需要的是一个工具,解决现下遇到的问题,不管棘手或者有些tricky,那么,你需要的是一本工具书,上面列举了十八般武器铜锤剑戟,以及衡山华山泰山派的招式,还可能有名门正派不谈及的野路子如“猴子偷桃”,如果你是实战派,你不能缺少了这样一本书,如果你是用ruby解决问题的,你也不能少了ruby cook这样一个百宝箱,最后推荐一篇博文,还有一个下载地址 ...
2008-05-05

变脸——让你的aptana变得“性感”

关键字: aptana theme
现在用aptana做开发,时间长了对默认的代码编辑器一张“素脸”产生严重的“审美疲劳”,白色的背景太不爽了,要想在写代码的同时带来另一种体验吗?比如一种“大师在宣纸上挥毫泼墨”的体验?:)那么换一换aptana的代码着色吧,使其变得“性感”一些 试过Dr Nichttp://drnicwilliams.com/2006/08/08/textmate-theme-for-radrails/的,这一款theme的存在几个问题,比如需要调整tab的颜色,否则看不见当前活动标签的文件名;编辑器对当前光标所处代码如某个变量名自动感应时,文件中引用相同变量的地方会高亮显示,多处的高亮显示使得屏幕变得非常 ...
2008-04-14

gettext本地化rake makepo时发生错误No such file or director

关键字: gettext localization 本地化 makepo
用gettext做本地化时,运行rake任务可能会碰到如下错误: No such file or directory - msgmerge po/xx.pot tmp.pot 这个错误的引起原因和解决办法见 http://www.javaeye.com/topic/170162 主要是安装一下gettext在windows下的二进制版本并设置path。上述链接的解决办法中所说的拷贝和改名po文件在我的开发环境中不需要做,tmp.pot文件是生成在rails app开发根路径下。
2008-04-09

ruby-if判断的一个问题

关键字: ruby if 判断
ruby对if的布尔判断是很开放的,并不要求if后面必须是布尔量,比如 puts "hi" if 3 输出hi,认为3是true,试了一下,除了 puts "hi" if nil 认为是false不输出hi之外,其他输入比如字符串,数字(即使数字为0),if统统认为是true。这个特点跟java大相径庭,java对if作了严格要求必须为布尔量,在编译的时候可以做检查。ruby由于是动态解释性的,无法在IDE中做类似强校验,因此有些错误是很难察觉的,如以下一段代码: wanna_do_sth if self.xx=3 本意是想判断self.xx是否等于3,如果 ...
2008-04-01

activerecord的save和save!方法

关键字: activerecord save save!
ruby代码风格自由化的程度往往会让java程序员感到疑惑,比如字符串的'gsub'方法,还有一个同胞方法名叫'gsub!',二者区别在于前者只返回sub的结果而不改变执行该方法的字符串本身,后者则同时改变了字符串自身。 如在java中有字符串str,要改变自身的话需要 str=str.substring(x,x) 而ruby中只需 str.gsub!(x,x) ruby在语言上取巧的地方可见一斑,代码的简洁程度和表达思想上得到了一种提升。 再来引申到activerecord的save和save!方法,二者区别何在呢?save方法如果保存失败的时候,仅返回false结果的,不会抛出异常 ...
2008-03-31

使用Rdoc生成Ruby API 文档

关键字: rdoc api 文档
rdoc是生成ruby代码api文档的工具,跟javadoc的功能类似,在命令行中输入rdoc,它能够遍历当前目录的ruby源代码文件(以.rb或.rbw为扩展名)进行解析然后生成规范的ruby api文档。可以用rdoc --help来查看具体的命令行参数。rdoc对注释内的特殊标签进行解析并将输出格式化,比如以下一段注释: # Just for fun # - one # - two # - three # [cat] small domestic animal # # <em>Italic</em> <b>Bold</ ...
seemoon
搜索本博客
最近加入圈子
存档
最新评论