Ruby on Rails入门之道
【51CTO.com快译自8月6日外电头条】我被问到最多的一个问题是我该如何学习Ruby和Ruby On Rails,另外还有诸如我该从哪里下手,我该如何做,以及我要怎么样才能成为更好的Ruby/Rails开发者等等此类的问题。
51CTO编辑推荐:Ruby入门教程与技巧大全
我希望以简单明了的方式来回答这些问题,如阅读某本书你就可以成为一名优秀的程序员了,但事情并非如此简单,因为每个人的基础不一样,学习方式也不一样。因此我在开发者社区中做了一次调查,下面是我收到的一些回复。
你是如何学习Ruby和Rails的?
DHH:我是在对编程开始感到愤怒的时候开始学习Ruby的。我想做真实的东西,而不仅仅是一个玩具程序。(51CTO编者注:DHH是Ruby on Rails框架的创始人,他认为Ruby是Java在Web上最大的威胁者。)
David Black:“我是通过一点一点积累起来的,经过了大量的实践和阅读,并尝试在Ruby_Talk中回答别人的问题”。
Evan Phoenix:“写代码的同时阅读和借鉴别人的代码”。
Yehuda Katz:“我是强迫自己学的”。
Ninh Bui:“本来我是一名Java程序员,但我的老大要求我周末熟悉熟悉Ruby,于是我借助Google学习了一些基本知识,后来通过阅读有关书籍和源代码就越来越熟悉了”。
还有一些网友说是通过阅读Rails社区中高手的博客文章,Rails广播,Rails指南和API文档等手段来学习的。
你有什么好的学习建议?
网友Bob Martens说“多去社区逛逛,那里肯定有你不知道的”。
网友@jeromegn说“学习RoR最简单的方法就是亲自动手做点东西出来,Rails文档和Ruby学习资料也对我帮助很大”。
网友@ryandotsmith说“在github上找几个流行的项目(如radiant),学习它们的规格说明”。
网友Sunil Karkera说“开始时理解Rails中的MVC是最重要的”。
网友Ryan Bates说“Rails涉及到许多技术(包括HTML,CSS,Ruby,OOP和SQL等),你需要把精力放在你不熟悉的领域”。
另外还有一些网友则建议遇到问题就要问,可以去各大社区,邮件列表,IRC支持频道提问。
什么!还没听说过RoR?
使用Rails开发的软件编程语言叫做Ruby,如果你刚进入程序员这一行,学习起来还是很容易的,我推荐一本书给你,由Chris Pine编著的《Learn to Program》最新已经是第二版了,Ruby是一门优雅容易上手的编程语言,但也不要指望安装好Rails就可以用Ruby创建一个Drupal克隆了,Rails只是一个Web开发框架,它只能协助你快速开发Web应用程序。
友情提示:Ruby官方站点有很多资源,不妨去看看。51CTO的Ruby专题中也一定有您想找的东西。
我熟悉PHP/Perl等脚本语言,但我对MVC和面向对象开发一无所知
这要取决于你平时是如何学习的了,对于喜欢问如何的人,我推荐你观看Ryan Bates的Rails广播和阅读Rails指南,而对于喜欢问为什么的人,我推荐你阅读Ruby编程指南和Ruby for Rails第二版。
你也应该经常去Rails Wiki看看,如果发现你遇到的问题还没有出现在Wiki中,当你解决掉问题后,别忘了把你的解决办法提交到Wiki上。
阅读一些与Ruby/Rails相关的博客,订阅rubyinside网站的RSS feed,访问本地Ruby组。
友情提示:持续关注你学习的内容,渐渐地就会提高了。
我写过Rails应用程序,但受框架和语言知识缺乏的影响,总感觉受限制
增强Ruby/Rails技能的一个好方法就是阅读别人的代码,去GitHub逛逛看是否有人遇到你相同的问题,当然,你也可以参加Ruby/Rails培训。
友情提示:当我在文档中寻找一个函数/类时我经常使用apiDock。
我写过Rails程序,理解Rails规范,感觉能够编写新的程序
恭喜你,你应该为自己感到自豪!但不要停止学习,你为你的程序编写了测试吗?你真的测试过你实现的程序吗?还是你自我感觉良好?你使用了插件吗?你看过这些插件的代码吗?你理解它们是如何工作的吗?你自己能够编写插件吗?另外,你对Javascript熟悉吗?对CSS和DBA方面的知识熟悉吗?你应将精力放在自己薄弱的环节。
我强烈建议你为某些开源项目贡献代码,为GitHub重要项目打补丁,这样你会提高很快。
我写了多个Rails程序,还写过插件
太棒了,现在你应该对Rails和Ruby都很熟悉了,你可能想要研究得更深入一点,这个时候可以试试元编程或编写C/FFI扩展,看看Ruby的源代码学习学习它是如何工作的为何不可?
这个时候你还可以学习一下其它语言和框架,看看为什么其它人会选择那些语言和框架,如Python,Java,Scala,Clojure,Objective-C,Ocaml和Scheme等,你不用掌握其它语言,但应该理解每种语言存在的原因,它们的优点和缺点是什么,可以扩大你的视野,有时根据其它语言的特性对于你加深对Ruby的理解说不定还有帮助。
我已经很熟悉Ruby和Rails了,甚至可以背出Ruby和MRI的源代码