锁定老帖子 主题:一知半解用ruby开发
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-10-23
不过这些并不妨碍用ROR去开发项目。我只要知道怎么用就行. 接下来说说我是怎么用ROR的.觉得乱的就跳过好了.因为不完全懂得ROR,如果有用错词,见谅.想到那里写那里 each, each的使用频率很高,如果代码中需要循环,基本上就是each,偶尔用用times,在极为少见的情况下才用step.虽然我知道each在语义上是一个迭代器, 不过我都是当作循环函数来看待的,一个用起来简单的循环函数. 大部分情况,我的each代码都会写成 each do ...end 最近才开始用 each {|x| ...}这样的简单用法,想想也奇怪,明明后面的写法可以少打很多字,为啥一定要固执的用前面的那种写法呢. 我知道有其他的循环代码的写法,不过我没有记住怎么做的,反正不知道也没有关系. each time,step几个够用了. unit test,一开始的时候我还耐着心思写了不少的unit test,不过到后来,越写越迷糊.这个单元测试的粒度到达多大才合适,以及unit test到底测试什么,为什么要测试那么的代码成功被执行是怎么样的,不成功执行又是如何如何。最终也就不了了之了,现在倒是考虑需要一个整体的功能性的测试脚本。 运行环境,一开始依然是顽固的采用了windows环境,现在还有个项目一直运行在windows环境上,运行了也有2年了吧。虽然也没有出什么意外吗,不过不比不知道,linux环境下,这个运行速度居然相差如此之大。 YAML,ruby有不少的地方用到这个,我第一次考虑在代码中用这个,是因为需要保存一些类似脚本的数据,需要额外配置,配置的时候甚至还需要设置一些简单的逻辑。于是用YAML,初期还是可以凑合着用的,不过一旦配置文件的逻辑复杂起来,这个就不行了。YAML保存数据还行,加入过多的逻辑就不行了。 DSL,于是接下来就是DSL了,网络上搜索了一大堆的Ruby DSL的教材,最后突然发现,我要的是类似AR的DSL写法 has_one,has_many,直接的把AR::Base的文件结构复制了一份,去掉不需要的代码,保留了一个has_one,然后开始写自己的DSL,然后很长一段时间内,都是has_one这样用法的DSL脚本。 DSL的加载,development模式下,其他的rb文件都是修改后马上可以生效的,页面刷新下就可以了。不过DSL加载后,修改对应的rb文件,刷新页面无用。每次都是关掉WEBrick,再开才有效。 这样写好像过于流水帐了,下面的开始选择项目中的某个方面,讲讲从项目初期到最终的时候是怎么变化过来的。 讲讲项目中log输出的前后变化 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-10-24
ruby开发和rails开发毕竟不一样,rails经验丰富的人对ruby开发也不一定了解。
|
|
返回顶楼 | |
发表时间:2008-10-24
jack 写道 ...大部分情况,我的each代码都会写成 each do ...end 最近才开始用 each {|x| ...}这样的简单用法,想想也奇怪,明明后面的写法可以少打很多字,为啥一定要固执的用前面的那种写法呢....
用do...end可以避免歧义。因为如果是空的{}既可以理解为空的hash也可以理解为空的block。当然在这里each不接受参数因此就没有歧义。用do...end可以显式说明是block。 例如以下这段代码,不同版本的ruby可能有不同结果: def test(a = nil) puts "hash" if a puts "block" if block_given? end test {} test{} jack 写道 YAML,ruby有不少的地方用到这个,我第一次考虑在代码中用这个,是因为需要保存一些类似脚本的数据,需要额外配置,配置的时候甚至还需要设置一些简单的逻辑。于是用YAML,初期还是可以凑合着用的,不过一旦配置文件的逻辑复杂起来,这个就不行了。YAML保存数据还行,加入过多的逻辑就不行了。 如果配置文件逻辑负杂,干脆就直接用代码好了,用的时候load进来。 jack 写道 DSL的加载,development模式下,其他的rb文件都是修改后马上可以生效的,页面刷新下就可以了。不过DSL加载后,修改对应的rb文件,刷新页面无用。每次都是关掉WEBrick,再开才有效。
在rails 1.x中,可以用include Reloadable, 2.x中好像可以通过配置解决reload问题。 既然选择使用Rails,那么就投入点精力好好研究一下Ruby还是很有必要的 :) |
|
返回顶楼 | |
发表时间:2008-10-24
多谢指点了,不过大部分情况我还是坚持够用就行的开发方式
|
|
返回顶楼 | |
发表时间:2008-10-24
jack 写道 大部分情况,我的each代码都会写成 each do ...end 最近才开始用 each {|x| ...}这样的简单用法,想想也奇怪,明明后面的写法可以少打很多字,为啥一定要固执的用前面的那种写法呢. 因为用each {|x| ...}方式来写的话一般比较简单的比如只有一行代码的可以这样用 否则,多行代码还是用each do ...end来写可读性比较好 jack 写道 unit test,一开始的时候我还耐着心思写了不少的unit test,不过到后来,越写越迷糊.这个单元测试的粒度到达多大才合适,以及unit test到底测试什么,为什么要测试那么的代码成功被执行是怎么样的,不成功执行又是如何如何。最终也就不了了之了,现在倒是考虑需要一个整体的功能性的测试脚本。 你不用rspec吗? Model、Controller、View、Helper、User Stories for Integration Testing这几个层次的测试都覆盖到了 Spec::Rails |
|
返回顶楼 | |
发表时间:2008-10-24
不是工具的问题,是测试粒度大小的问题,还有怎么测试。
model的函数,要测试吗,controller用到了这个model的这个函数,要测试吗,view中呢,都要一层一层测试吗。 测试那一层才是最有必要的? |
|
返回顶楼 | |
发表时间:2008-10-24
jack 写道 不是工具的问题,是测试粒度大小的问题,还有怎么测试。
model的函数,要测试吗,controller用到了这个model的这个函数,要测试吗,view中呢,都要一层一层测试吗。 测试那一层才是最有必要的? 一点个人感受: 1.如果非要选一个“最有必要”的层。我觉得肯定是model。 2.粒度方面。。各路神仙都说过了,单元测试,单元!model测试测model,测controller的时候,对model调用进行mock,只测controller的逻辑。view测试?貌似在目前国情条件下,可以放一放。只不过~到了现实环境,似乎大多是controller的测试都到model转了一圈。mock大家都懂,实际有多少人愿意mock controller中所有model的调用。直接调用下,多happy,慢就慢点吧。。。:) 3. 见1 |
|
返回顶楼 | |
发表时间:2008-10-25
我记得在ruby cookbook上写到
each do ... end主要是注重循环的过程,而each{}好象注重循环的结果吧 PS:有个问题想问问大家,是不是rails开发都要写测试啊?只写过一次测试 |
|
返回顶楼 | |
发表时间:2008-10-25
不是流氓 写道 我记得在ruby cookbook上写到
each do ... end主要是注重循环的过程,而each{}好象注重循环的结果吧 PS:有个问题想问问大家,是不是rails开发都要写测试啊?只写过一次测试 do ... end 和 {} 是一回事,只不过在ruby的代码风格上来说, 如果在block内部分行的话就用 do ... end,如果不分行的话就用 {} |
|
返回顶楼 | |
发表时间:2008-10-25
robbin 写道 不是流氓 写道 我记得在ruby cookbook上写到
each do ... end主要是注重循环的过程,而each{}好象注重循环的结果吧 PS:有个问题想问问大家,是不是rails开发都要写测试啊?只写过一次测试 do ... end 和 {} 是一回事,只不过在ruby的代码风格上来说, 如果在block内部分行的话就用 do ... end,如果不分行的话就用 {} do ... end 和 {} 有优先级的区别,比如 foo p1,p2 do ... end foo p1,p2 { ... } do ... end的优先级比较低,它是作为foo的block被调用的 {...} 的优先级高,它是作为p2的block被调用的 |
|
返回顶楼 | |