Ruby on Rails 入门体验
今年年初时决定学习一下 Web 开发方面的知识,因为对 Ruby 早有耳闻,所以很自然地就选择了 Ruby on Rails 作为目标。在网上看到 Ruby on Rails Tutorial的教程,于是就跟着教程,边学边做地把这本书看完了。对 RoR 有了一个大概的了解,包括框架结构和开发流程,还有一些常用的Gems,确实是一本不错的实践入门书。
关于教程
一开始时看的是英文原版,阅读速度缓慢,而我对实践充满热情,迫切希望早点学完自己动手做。恰好发现 Andor Chen 已经翻译了大部分章节,遇到有疑问的地方,就对照英文检查语句和代码。顺便修正一些译文里的错误,然后发送 pull request 让作者合并。
这本书和以前看的 Flex 入门书——《Flex 3 权威指南》类似,都是以构建一个应用为主线,由浅入深地介绍 RoR 开发的基本知识,从最开始的静态页面到模型生成,控制器,路由,数据库,Ajax,还有贯彻整个开发过程的测试。教程里开发的是一个微博站点,而 Twitter 以前就是使用 RoR 开发的,做起来也饶有趣味。
花了差不多两个月的业余时间看完了这个教程,并最终完成了那个微博网站,包括大部分练习题的功能。总的来说,还是有点挑战的。由于书中大部分都是编写步骤,注重手把手的教学实践。在原理的介绍上篇幅很少,而 RoR 这样“约定优于配置”的理念让我有点不适应,书中并无约定方面的解释,很多方法像变戏法一般地已经实现好了,而我却想一探究竟,搞清楚其幕后的动作。但毕竟这是一本入门书,或许是我要求太高了。
关于Ruby
我本人对 Ruby 的理解还不够深刻,对很多特性不熟悉,Rails 框架的原理结构也没有去探究。虽然知道怎么用 Rails 怎么去做,但不懂原理,知其然而不知其所以然,颇有空中楼阁的感觉;另外之前工作中少有机会接触 PHP,Ruby 这类脚本语言开发的 Web 服务器程序,再加上对 JavaScript,jQuery,CSS 等 Web 基础的这类技术,疏于研究,现在来看实在是很不应该的。所以用脚本语言做 Web 开发对我而言比较陌生,但感觉入门并不难,假以时日,结合实际项目边做边学应该可以顺利掌握,毕竟这是 Internet 时代。正如约翰·卡马克所说,这个时代远远不同于他那个时代,现在很多信息都可以通过互联网找到,很多问题也可以通过互联网解决,而不是他开始时那样通过报章杂志,学术期刊。
对于 Rails,其性能一直是为人诟病的话题,前几天看到 Robbin 写的一篇提倡 去Rails化 的文章,介绍了 Ruby 各 Web 框架和其它技术框架的并发性能测试,Ruby 的性能并不差,但 Rails 并发性能确实不理想。“ruby on rails作为一个full-stack的web开发框架,并不适合用来开发Linkedin和Iron.io的后台web服务,从某种意义上来说,属于rails的时代已经过去了。” “总之Rails适合开发Website,但不太适合Web Service,而移动时代的发展趋势就是:未来服务器端会更多的使用Web Service而不是Website,这也意味着Rails将越来越不适合时代的发展。” 缺点显而易见,但是优点早已众人皆知。因此理性地做好技术选型,合理用好手中的技术才是比较实际的做法。
我想,下面该做的就是重新学习 Ruby 语言,然后再研究下 JavaScript,CSS 等 Web 基础,接下来再看看 Web 开发方面的框架,Rails,Sinatra,Padrino 或者 研究 PHP/Python 也说不定。
相关资料
- Ruby on Rails Tutorial - Michael Hartl 英文原版
- Ruby on Rails 中文教程 - Andor Chen 译
- ruby web 框架简单介绍 - Robbin
- Ruby on Rails Tutorial 项目代码