2009 年 8 月 3 日,星期一

如何学习 Ruby 和 Rails?

发布者:Matt Aimonetti

我经常收到这样的问题。

我应该从哪里开始?我应该做什么?我可以做些什么成为一名更好的 Ruby/Rails 开发人员等(更常见的问题)

我希望能够用“简单/正确”的答案回应这些问题。例如:“阅读这本书,你将成为一名优秀的开发人员”。遗憾的是,事情并没有这么简单。我们每个人都不相同,学习方式也不同,背景也各不相同。

所以,我没有告诉你我认为的最佳学习方法,而是决定向社区提问。这里快速汇总了我收到的部分回复

社区说

你是如何学习 Ruby 和/或 Rails 的?

  • DHH DHH: 我通过编写代码学习 Ruby。尝试制作真正的产品。而不仅仅是一个玩具程序。
  • David Black David Black: 我通过精读手册、大量练习,以及在 ruby-talk 中阅读和回答问题来学习 ruby。
  • Evan Phoenix Evan Phoenix: 在编写代码时阅读代码
  • Yehuda Katz Yehuda Katz: 我尝试做难到不可能的事情来强迫自己学习。
  • Laurent Sansonetti Laurent Sansonetti: 我通过精读手册、阅读 ruby-talk 中的帖子,然后阅读 MRI 的源代码来学习 ruby
  • Ninh Bui Ninh Bui: 我以前是一个 Java 狂热分子,编写 struts + j2ee 企业应用程序,Hongli 迫使我在周末学习 Ruby,我学习了 Ruby 的基础知识。然后我通过谷歌搜索、阅读书籍和源代码学习 Rails。
  • Tim Connor Tim Connor: rails 社区沉迷于博客的习惯可能是我最大的帮助
  • Lar Van Der Jagt Lar Van Der Jagt: 当然还有 Ryan Bates 的 railscasts。在学到足以深入研究后通过指南了解 Rails。我希望当时能与专家合作!
  • Arun Gupta Arun Gupta: Rails 指南 和使用 Rails 进行敏捷开发这本书。
  • Geoffrey Grosenbach Geoffrey Grosenbach: 在阅读了几篇教程后,我开始花几个小时阅读 API 文档。即使你无法理解所有内容,也是了解可用内容的绝佳方式。
  • Nate Todd Nate Todd: 我首先使用几个 CakePHP 应用程序学习了 MVC。这帮助我学习了所熟悉语言中的最佳实践。
  • 克里斯·旺斯特拉斯克里斯·旺斯特拉斯:我通过编写应用程序和阅读框架源代码学习了 Ruby on Rails。

你有什么建议?

  • 鲍勃·马滕斯:以某种方式参与到社区中。他们比你了解更多。 ;)
  • 伊斯梅尔·塞利斯:理解 MVC 各部分之间的关系。许多转向 Rails 的人并不知道什么是设计模式。
  • @jeromegn:我认为学习 RoR 的最佳技巧就是尝试创建一些东西。同时参考 Rails 文档和学习 Ruby 对我帮助最大
  • @johnbender:了解为什么实例变量在模板中可用等。从本质上来说,我的最初建议是了解 Ruby 基础知识
  • @ryandotsmith:作者们会阅读。在 github 上找到热门项目(例如 radiant)并研究其规格。
  • 苏尼尔·卡尔凯拉:当我开始使用时,了解 Rails 中的 MVC 对我来说最重要。
  • 卢克·伯顿:展示使用少量的代码完成令人印象深刻的事情的基本屏幕录像是一个很好的起点
  • DHH:选择一个真实的项目并在生气的情况下进行编程。这就是我建议学习任何语言,包括 Rails 和 Ruby 的方法。
  • 安东尼·格林:接受有一个 Rails 方式并且你需要学习它。什么帮助我最大?- 社区。
  • 肯特·芬威克:通过做一个真实的项目进行学习。选择你想要构建的东西并慢慢地完善它。
  • 特雷弗·特克:通过阅读和编写代码进行学习...这意味着你应该尝试构建你想要的东西,而不是愚笨地遵循教程...
  • 瑞安·贝茨:Rails 由许多技术组成(HTML、CSS、Ruby、OOP、SQL 等)。如果你在使用 Rails 时遇到困难,请专注于最薄弱的部分。
  • 杰弗里·格罗森巴赫:其中有许多示例将帮助新开发人员了解 Rails 的理念。许多人已经从PeepCode 上的从头开始 Rails 系列中学到了很多
  • @eifon:对 MVC 的良好把握是无价的,并且在你开始之前了解一些 Ruby 也是如此。
  • 约翰·耶霍特:不要害怕提出问题并使用支持渠道 - irc、邮件列表、Rails Bridge 等...
  • 罗伊·赖特:使用与你正在使用的书中相同版本的 Rails。
  • @brianthecoder:阅读其他人的代码
  • 宁·武伊:我通过与很多人讨论才学习到了这些,我绝对建议这样做
  • 克里斯·旺斯特拉斯:停止向其他人征求意见,开始编码一些东西。

不同的意见,但非常有趣的答案。我试图汇编一些我认为对我和/或我交谈过的其他人有帮助的优秀资源。

从未听说过 Rails 或 Ruby,这是什么?

newbie

通过观看多个 屏幕录制视频/展示 从关于 Rails 开始。使用 Rails 开发的 Rails 和软件用一种名为 Ruby 的编程语言编写。如果您是软件开发新手,您可以快速学习 Ruby,且我推荐一本名为 学习编程,作者:克里斯·派恩 的书。Ruby 是一种非常优雅且直观的语言,在学习新功能的同时,您能够快速学习且持续很多年。但是,不要指望在安装 Rails 之后,您将在 Ruby 中获得 Drupal 克隆。Rails 是一种 Web 框架,换言之,这是一种工具,可帮助您快速高效地编写自己的 Web 应用程序。

提示:Ruby 网站 有一些信息和资源可供您开始。

我破解了一些 PHP/Perl/脚本,但我并不知道任何有关 MVC 或面向对象开发的事项:</h4>

这实际上取决于您如何学习知识。您是“怎么样”的人还是“为什么”的人?“怎么样”的人将通过了解如何完成某项任务来学习,然后复制该任务并从中学习。“为什么”的人需要了解为什么以特定方式完成某项任务,以便他们可以在其他挑战中重新应用其知识。

building

好消息是 Rails 使用很多惯例,如果您学习这些惯例,您将可以快速完成任务,并对所做的事感到满意。这对于“怎么样”的人来说非常不错,但“为什么”的人可能需要有更大的耐心,并在充分理解所有内容之前开始使用该框架。

“怎么样”的人绝对应该观看 Ryan Bates 优秀的 railscasts,并阅读 Rails 指南。“为什么”的人可能需要阅读 Ruby 编程语言久经考验的 Rubyist,即 Ruby for Rails 第 2 版

您还应该查看 Rails wiki 并添加可能有用的信息。(如果您遇到的问题 Wiki 中没有提到/讨论,请尝试解决,然后发布您的解决方法。如果您稍后遇到相同问题,你将能够快速找到自己的解决方法。通过添加内容,您还可以节省其他开发人员的时间。)

开始阅读 Ruby/Rails 相关的博客、订阅 rubyinside RSS 源,并访问您当地的 Ruby 小组。

提示:创建一个博客,并跟踪您学到的内容。这将帮助您和面临相同挑战的其他人员

我开始编写一个 Rails 应用程序,但我感觉受到对框架和语言的了解的限制

这是正常阶段,不要放弃!以下几篇文章非常好:Ruby WayRails Way。Ruby Way 应该可以满足那些求“为什么”的人,而 Rails way 主要能让求“怎么做”的人满意。我建议两本都读一下。不要犹豫,遇到问题就提出来,上 Google 查资料,用 Twitter、博客评论和邮件列表。尝试找一些当地的 Ruby 使用者一起交流。选择一个你想要更深入了解的主题,为朋友/当地的 Ruby 小组准备一场演讲,或写一篇博客文章。有一点可以肯定,不要感到羞耻或气馁。坚持下去,是值得的(或者离开休息一段时间,然后再回来尝试)。

hacking

提高 Ruby/Rails 技能的一个好方法是查看他人的代码。查看 GitHub,看看人们如何解决你遇到的相同问题。你也可以参加 Ruby/Rails 培训,有很多公司在全球提供此类课程。RailsBridge 正在尝试帮助那些希望成为更出色开发人员的人员,可以查看他们的网站。

提示:我在查找方法/类的文档时,经常使用 ApiDock

我写了一个 Rails APP,我采用了并理解了 Rails 约定,而且能够轻松地编写新的应用程序。

party dog

恭喜你,你应该为你取得的成就感到自豪!但是,不要停止学习!你为自己的应用程序编写了测试用例了吗?你的测试用例真的能够针对你的应用程序进行测试吗?还是它们的存在只是让你感觉更好(即:修改代码后,你的测试用例是否仍然通过?它们不应该通过)?你使用插件了吗?你看过它们的代码吗?你了解它们是如何工作的吗?你能编写自己的插件吗?Ruby gem 怎么样?另外,你的 JavaScript 技能怎么样?CSS 和 DBA 呢?专注于自己的弱点。

我强烈建议你在此基础上编写代码。为 GitHub 上的众多项目之一,甚至 Rails 提交补丁文件,你将学到很多东西!

提示:查看 Gregg Pollack 的 Scaling Rails 系列文章

我编写了几个 Rails 应用程序,我甚至还编写了一个插件/gem。

很棒,现在你可能已经非常熟悉 Rails 和 Ruby 了。你可能想要深入了解一下。你可以查看如何巧妙地使用元编程和/或编写 C/FFI 扩展。不妨查看一下 Ruby 的源代码,了解事情的实际运作原理。

strength

也许现在也是您开始学习新语言,看看其他社区如何办事的时候了。查看其他框架,尝试理解人们选择其他惯例/方式的原因。使用 PythonJavaScalaClojureObjective-COcamlScheme 或任何对您来说听起来有趣的语言。您不必精通其他语言,但您应该尝试理解每种方法背后的推理,并了解优缺点。它肯定会帮助提高您的 Ruby 技能并拓宽您的视野。

提示:准备几场演讲,并向各个会议发送提案。(不要将自己局限于 Ruby 会议)

我非常了解 Ruby 和 Rails,我甚至可以从头到尾引用 Rails 和 MRI 的源代码。(只需询问 LOC 即可)

那么,我希望您正在帮助 Ruby 1.9 的工作,为其他实现提供帮助代码(IronRubyJRubyMacRubyRubinius),并帮助 Rails 3 :)


如果您正在阅读这篇文章,那么您可能属于以上类别之一。配对和 辅导 是学习的好方法,而这跟因果报应有关。帮助别人可以帮助您成为更好的开发人员。请随时在评论中留下建议、链接和信息。