Ruby on Rails的介绍……跟.net没啥关系……放首页只是为了让更多人接触Ruby on Rails……明天撤下来……原文网址:http://www.blogwind.com/Wuvist/16993.shtml
顺便说一下,我用的是Mac,博客园使用的cute editor在Safari中成了一个text area,不过,cute editor的最新版已经在一定程度上兼容Safari了……
自从看了Ruby on Rails官方网站上面的视频介绍后,我便被它吸引住了,当时便做了一堆关于ruby/ruby on rails的网摘。
不过,那个视频,在15分钟里面做一个博客引擎,看上去的确很酷……开发效率的确很快,但是它只是看上去而已……要说服程序员们拿ruby on rails来做东西,这个video是远远不够的……有太多太多的细节没有提到……
似乎唯一的一个 中文教程,也是存在这样的问题,它们只是让Ruby on Rails看上去很美……而实质性的东西都没有提到……
最近一直看Ruby on Rails的详细教程: 《Agile Web Development with Rails》
(英文版,中文翻译就不知道猴年马月才能出来了……)
目前之看来快一半,这才深深被Ruby on Rails吸引了……
全书主要分三个部分:
第一部分“Getting Started”只是将如何安装Ruby on rails等……首先是讲Windows,然后再讲Linux/Mac……明显Ruby on Rails是想要吸引Windows下的程序员的……只是,它漏了一个很重要的地方,便是如何在IIS上面跑Rails……但这偏偏是一个很实际的问题……在windows下面跑web application,不是asp便是asp.net,IIS是铁定有的……如果是apache下面跑php的话,那服务器大都是Linux……也许,作者也不想漏掉它,而是暂时还没有官方的解决办法吧……虽然,已经有人做出来Rails on IIS的 安装程序了……书里面提到的链接MS SQL的方法也是有问题的……至少,在我的电脑上有问题……不过我已经解决了……什么时候我再把解决方法写出来……Rails on IIS也是有用fast CGI的……没有做过压力测试,但,看上去,要拿来做网站还是可行的……
第二部分"Buiild an Application"是很精彩的……让我看到了很多细节上面的精彩……
教程非常好读……假想了有一个客户,要求做一个购物网站……从用户需求分析讲到程序通过测试……教程本身不仅是要展现如何用Ruby on Rails去做网站,并且还在过程中体现了做网站的整个流程、思考方式……分析需求、发现问题、找出解决方法……教程还经常展示一些开发过程可能遇到的问题……说明错误出现的原因,然后再讲正确的解决方法……这样子的教学方式是很好的……学习一个东西,不仅要知其然,还要知其所以然……而在展示问题,再讲解“正确的解决方法”也更能体现Ruby on Rails在处理这些问题上的精彩……
教程过程中有一个细节特别让我惊讶……在%>之前加入“-”号,比方说,有这样的代码:
<%for i=0 to 10
-%>
Hello world!<br>
<% end for%>
加入“-”号后,会去掉最终输出的多余空格、空行……也就是说,最终html代码是连续的Hello world!<br>Hello world!<br>……而不是:
Hello world!<br>
Hello world!<br>
……
这几乎是微不足道的细节……因为,不管多余的空格空行是否存在,都不影响浏览器的最终显示……虽然,去除之后能够减小最终html页面的大小,但是现在的带宽已经不在乎这么点差别……在源文件中加入这些空格、空行方便开发人员阅读才更加重要……事实上,vs.net也是会修改aspx的代码,使其更容易阅读……
不过,我自己遇到过这样的事情:
1. 在一个asp页面里面手动的去除所有的这些空格、空行……因为那个文件中的循环输出了数百次……去除之后体积小了一半!
2.在一个asp.net的页面里面,我需要获得一个datagrid中某Template Item的内容……而vs.net自动给我加上的空格、空行也照样被程序获取了,使得程序出错……搞的我不敢用vs.net打开那个文件……否则每次都要重新用editplus打开文件,去除空格、空行……
小小的一个“-”,便完美的解决了这个细节问题……
强烈的感觉到rails是资深的web程序员设计出来的……他们设计的时候,考虑到了很多很多web开发中可能遇到到细节……而且,他们将自己做开发多年经验也融入进去Rails了……
看了书中的这第二部分……才能体会到“Convention over configuration 约定高于配置”、“DRY - Don't Repeat Yourself 不自我重复”在Ruby on Rails的实际开发中是如何体现其优势的……看ruby on rails的介绍时,这两点是经常被提到的……但是,都缺乏实际例子的支撑……而书中各个例子则将Ruby on Rails这两个特点表现得淋漓尽致……它们所强调的是一种优秀的开发方式……Rails所接受的convention/约定是设计者们开发时采用的良好的约定……说穿了,它是一个默认配置,并且是一些被广泛采用的配置……遵守这些,可以保证程序的良好风格……并且,它节省了我们很多很多多余、并且一直被重复的代码……这可以大幅的提高开发速度……DRY……是的,不应该重复自己……但是,如果实现这点?要如何利用现有的东西?OO为的便是实现免除重复劳动……但是,我写程序的时候还是经常做一些重复的东西……而这个教程,则告诉了读者哪些地方是重复的,是可以避免的,并且如何避免……
其实,要实现这些,重要的是有一个优秀的框架……框架必须提供实现"DRY"的支持才行……教程便是一直在体现Rails框架在这方面的努力……而且,它还强调了MVC的重要……哪些事情应该在Model中做……哪些应该在View中做……哪些事情应该在Controller中做……全部都一清二楚……如何返回错误、如何添加链接等等等等……书中都给了实际介绍……教导读者如何在恰当的地方添加恰当的代码,不仅快捷,而且体现了设计之美……
至少,我自己……在做网页的时候,便一直hard code过"/..."这样的路径,这使得网站如果从根目录改变到子目录里面后变得一塌糊涂……太多太多细节了……都是我在开发网站时曾经遇到过,并且用很难看的方式去解决了的……而在看教程的过程中,我一遍一遍的发现,Rails的设计者们注意到这些细节,并且在Rails里面提供了很好的解决方式……
书的第三部分则是:The Rails Framework
这部分也占了全书的大半部分……暂时还没有看……相信,过两天看了,也是会为Rails到精彩而兴奋的……