MRP启动之后,这几天时不时抽空搞搞,这里把一些进展集中记录一下。

2008年8月3日 Phase I Completed

首先在我iMac的XP分区上装好了Oracle 11g(天啊,占去了超过4G硬盘空间),然后在我MBP上的Eclipse下面装了这个Oracle的DTP插件,异常兴奋的看到(点击放大,下同):

本来考虑自己写Java程序来转换数据,后来本着“万事开头先Google”的原则,结果发现了这个强大的MySQL Migration Toolkit——该死,居然没有Mac版本,还好我的iMac保留了Windows分区——缺省配置中文处理会出错,但只要设置Multi-language选项,即可自动、无痛、快速的完成数据迁移。于是:

Phase I completed.

2008年8月4日 Phase II 之 随处可见的Unix

对数据进行了初步的浏览,着手去除没用的信息,并检查是否存在不易解析的数据,结果发现所有日期都是15位varchar,类似”001041219861512″这样的东西。初步猜测应该是与和Unix time有关的格式,也就是从所谓的epoch time(即1970年1月1日 00:00:00 UTC)开始的秒数,经过Google,Jive官方的资料证明了这个猜想,这个时间是以毫秒计算的Unix time。那么这种东西要在Ruby中处理太简单啦:

irb(main):001:0> t = Time.at(1041219861512/1000)
=> Mon Dec 30 11:44:21 0800 2002

2008年8月5日 Phase II 之 迷人的Rails

我一直觉得”convention over configuration”是Rails里最闪亮的思想,现在我们来看看这个闪亮的东西。

首先我们需要对原来的数据schema进行一些重整,以便符合Rails严格的命名惯例——其实不改schema也行,可以在代码中去指定,但是那太不Rails了,无视——这里主要是表名(名词复数)、主键字段名(”id”)、外键字段名(”object_id”),还有按照Ruby通行的惯例在词和词之间加入下划线(”_”),顺便把没用的表和字段删掉,得到的新的schema是这样的:

然后初始化一个Rails project,编辑database.yml指向我们准备好的数据库,然后按照上面的命名建立Model类:

$ rails mrp -d mysql
$ cd mrp
$ script/generate Model Category
$ script/generate Model Forum
$ script/generate Model ForumProp
$ script/generate Model Message
$ script/generate Model Post
$ script/generate Model PostProp
$ script/generate Model User
$ script/generate Model UserProp
$ e .

最后这个命令打开了TextMate,我们可以打开新创建的model类,在里面添加主外键关联描述,最后整个peoject目录看上去是这样的:

好了,整个应用的数据部分就此完成(J2EEer们困惑ing:啊?这就完了?! XD ),非常简洁,不是么?

我们可以打开console来测试一下这些类了:

呜呼,吾安得不玩RoR?呜呼,吾安得不玩RoR邪?!

To Be Continued