阅读更多
从第一次接触ruby & rails到现在有段时间了,本着一贯快学快用习惯,看了一遍书之后就开始用ROR做了些小项目,边做边查,边学边忘,到现在还是没有记住几个ROR的特征关键字,比如什么约定阿,约束什么的,也分不清为啥有symbol这么奇怪的物件。更加不清楚yield到底怎么起作用的。
不过这些并不妨碍用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输出的前后变化