最近领导给了个任务,做一个小网站,嗯,虽然用其他方法很容易完成,但是不想把时间浪费在这上面,于是考虑用新的技术来做,这样在完成任务的同时也学到了新东西,于是瞄准了ruby on rails。

立刻下了个instantrails,解压,打开,里面自动配了ruby + mysql + ruby + rails,打开exe就起了web server,非常的方便,完全的绿色,我喜欢。接着google关键字,打开第一页的几个,毫无疑问,很快,我就完成了一个教程。

约定优于配置,约定是一把双刃剑,一方面由于有了约定,说明你很难有很大的空间伸展,另外一方面,学习这个语言你就很轻松了,因为人家已经限制死了你应该怎么做,或者说是已经教了你什么样是最好的方法,你就按着思路做就好了。不可否认,使用ruby on rails开发应用果然速度非常快。

然后很快我就发现了一个问题,ruby提倡不要重复你自己,所以我相信类的属性和数据库信息肯定只需在一个地方定义,而我接触到的教程都是先建立mysql数据库,然后在ruby里就自动很神奇地可以访问表里面的各个字段,但是在我的感觉里不应该是这样子的,属性不管存在哪里都好,我都不希望她是存在数据库里,这样我必须每次都必须先改数据库格式然后编程,这样说明我就无法自由地替换测试数据库和生产环境数据库,说明我好像还是以数据库为中心在编程。google了一些信息,无法找到答案,于是我就去请教tony,tony比我先接触ruby on rails,他的理论是即使他不深入了解,也要了解个大概和方向,嗯,这个想法是对的。然后在我笨拙的解释下,他没有听懂我的疑问是什么(后来才知道,他没想到我是这么编程的,土了把。。。因为他使用的是Agile_Web_Development_With_Rails-Beta.pdf,这个非常经典,每个人都要去下载。这本书里面没有这么笨拙的方法)。但是他提到了db里面有migrate目录,于是,我用create_table,drop_table继续google,突然我发现了新大陆,我找到了另外一篇文章提到了如何用ruby语言从0建立一个数据库,数据库格式都在类似001_create_dog.rb这里,这才是我要的方法,我在里面使用数据库格式无关的语法建立表,然后使用rake db:migrate就自动建立好数据库。

我遇到的这个问题很土,所以我写这篇文章的意思是,教程不能一开始就去mysql建表,or框架应该淡化持久层,这些教程包括google第一页的多个例子,包括一个很经典的国人写的pdf文档。我被误导了。