新手问题 Ruby on Rails 入门体验

anthony · 2013年04月15日 · 最后由 Anthony 回复于 2013年04月17日 · 9552 次阅读

前言

我是一名刚刚接触 Ruby 和 RoR 的开发者,之前参与的项目大多和 c++,java,oracle 相关,没怎么接触过脚本语言的 web 开发,目前从事 ActionScript 开发,也还是感觉和 php 这类相差太远。最近刚刚看完 RoR Tutorial 那本网上教程,大概是缺乏基础,有点无所适从,看来得从更基本的学起,与新手共勉,望高手指点,谢谢。

今年年初时决定学习一下 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 也说不定。

相关资料

排版挺好,写博客里就可以了,没必要发这里。

樓主發在「新手问题」節點... 但是好像沒有提出什麼問題......

#2 楼 @blacktulip 可能是废话太多,表述不清。因为以前没做过 RoR,所以无所适从,不知道 Web 开发如何入手。比如不清楚很多“约定优于配置”的约定,习惯了“古代”手动写 SQL,写存储过程的开发流程,有没有解释 RoR 框架结构,约定这方面的资料呢?

Robbin 的文章新手其实不怎么适合去看,还是先把 Ruby 和 Rails 学好要紧。

#3 楼 @Anthony http://edgeguides.rubyonrails.org/

先从这里搞起,然后去看 rails 的源码,拣自己感兴趣的部分看,看到云山雾绕的地方就正好学习 ruby;同时建议你去 confreaks,youtube 等地找各种 RubyConf 和 RailsConf 的演讲视频,里面有很多干货,不懂就直接 google 或 stackoverflow 询问,当然 ruby-china 也是非常好的选择。

另外选择几本书看看,比如 HTTP 协议的书,REST 的书等等。

和 lz 有相同的困惑,明显的感觉到要熟悉 ruby on rails,必须先弄懂 ruby,web 方面倒可以慢慢来,边做边学。另外极力推荐@zw963的这篇文章http://ruby-china.org/topics/2003 .

谢谢 @nightire 的指点,官网的 guides 里文档解释得比较详细,我居然把官网的资料漏了。 ror guides

@mengche1 我也这么认为。RoR tutorial 的作者也说,虽然可以先学 RoR,但是看完后最好还是要回头再学习 Ruby。而且没理解语言之前先用框架,有点本末倒置的感觉。

看来对来讲比较合适的线路就是:

  1. 学习 Ruby;
  2. 学习 Web 理论基础:HTTP,REST...;
  3. 学习 JavaScript, CSS;
  4. 阅读 RoR 文档,理解框架;

有了理论知识做基础,动手做可能会事半功倍。感谢各位~

我和你差不多的经历。我建议看 ruby metaprogramming.

1. 学习 Ruby;
2. 学习 Web理论基础:HTTP,REST...;
3. 学习 JavaScript, CSS;
4. 阅读 RoR 文档,理解框架;

前三步每一步都能学好几年......

#9 楼 @blacktulip 哈哈,精通的话肯定要的。我觉得起步的话,理解就差不多了,边做边学,学以致用,不然就失去了学习这些内容的意义。

#8 楼 @hamxiaoz 谢谢,打算基础知识掌握后学习元编程方面的内容。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号