【问题标题】:How does ruby on rails work?Ruby on Rails 是如何工作的?
【发布时间】:2008-10-15 00:07:42
【问题描述】:

我是一名 PHP 开发人员,对 Ruby 略知一二。我想学习 Ruby on Rails,但我遇到的大多数资源都将 RoR 功能视为“魔法”——即,它具有一定的内部一致性,但不要费心询问它在 Ruby 方面是如何工作的, MySQL等

无论如何,我想深入了解 RoR 的工作原理、构建它的设计决策等。我对 ActiveRecord 尤其感兴趣,但实际上我正在寻找整个包。

欢迎任何书籍/网站/建议。

【问题讨论】:

标签: ruby-on-rails ruby


【解决方案1】:

“Agile Web Development with Rails”和“The Rails Way”这两本书都不错。 “Pro Active Record”对 Active Record 进行了深入研究,但没有涉及太多其他内容。播客 Railscasts 有时只是使用魔法,但有时它解释了真正发生的事情。 Art of Mission 等各种博客都可以找到您要查找的内容。

此外,使用 ruby​​-debug gem 可以让您更好地了解正在发生的事情 - 您可以进入幕后运行的内容。

【讨论】:

  • 我会支持使用 Rails 进行敏捷 Web 开发这本书。
  • 为了深入理解,我会选择“Rails Way”
【解决方案2】:

这里有两个方面可以单独检查:

  1. 一般概念(包括设计模式、一般态度原则,如 DRY 和 CoC 甚至敏捷性等),因为它们是 Rails 中许多设计决策背后的原则。这些概念中的任何一个都可以独立于 Rails 进行研究(因为它们是通用编程概念)。在深入挖掘之前至少对这些有一些了解是很好的。网上有很多关于这些一般原则的资料(前面提到的 Martin Fowler 的网站是掌握这些概念的更好资料来源之一)。

  2. Rails 将这些概念实现到其语料库中的方式。这里有两件事要记住。由于 Rails 大量利用其母语的特性,因此了解 Ruby 的特性(例如 mixins 和 Ruby 的大量动态特性)至关重要。最后要了解的是如何 Rails 使用这些功能,即。它是如何分解为类和模块的,它有多少功能是在运行时动态创建的,等等。为此,我强烈推荐 David A. Black 的《Ruby for Rails》一书(这本书正是关于 Ruby、它的特性以及 Rails 使用它们的方式)。虽然这本书可能有点过时,但我认为它的内容仍然非常宝贵。

【讨论】:

    【解决方案3】:

    如果你真的想知道它是如何工作的,你可以看看源代码。 online API docs 让您可以直接在文档页面中查看每个方法的源代码。

    Rails 中的 ActiveRecord 基于 Martin Fowler 的 Active Record pattern。它基本上是一个 ORM(对象关系映射器)。就 ORM 而言,它甚至没有那么复杂。 Java Persistence with Hibernate 很好地概述了常见的 ORM 概念。

    【讨论】:

      【解决方案4】:

      这个可能也很适合这里 -> http://railsforphp.com/

      【讨论】:

        【解决方案5】:

        这是对您问题的一个切题答案,但我也是从 PHP 开发到 Ruby/Rails 开发的,这对我来说是一个重大转变。作为 PHP 开发人员,我们习惯于深入了解细节,说话,而不是被阻止深入了解。

        按照设计,Rails 是一个黑盒子。你应该学习 Rails,几乎作为一门语言本身。这是一种新的 Web 开发思维方式,尤其是从 PHP 开发人员的角度来看,尽管这种想法在一般编程中并不少见。

        不费心去深入了解可能是开始“以 Rails 方式”做事的最佳方式。

        【讨论】:

        • 我不同意 Rails 是一个黑盒子。它是开源的,我经常研究碎片以找出为什么会发生一些我没想到的奇怪行为。此外,如果您环顾四周,许多人正在修补他们博客中的各种片段,其中一些甚至被核心接受。
        • 来自 PHP,Ruby 和 Rails 看起来像是一个完全不同的世界。如果你有使用 CodeIgniter、Cake 或 Kohana 的经验,它会让 Rails 更容易上手。一旦你停止像 PHP 那样尝试使用它,Ruby 本身就是简单而优雅的 :)
        • 深入了解它非常容易,只需打开源代码,它是一种解释性语言,您需要的所有源代码都在您的计算机上,您只需阅读即可。我不同意这一点。
        • @railsninja 当然,我知道 RoR 是开源的,是一种解释性语言。我的观点是,它确实有很多“魔力”,对于试图完成项目的人来说,深入了解它的来龙去脉是不合理的。所以 RoR 就像一个黑匣子一样好。
        【解决方案6】:

        Jamis Buck 在他的blog 上有一系列不错的“Under the Hood”文章,涵盖了 Rails 内部的某些方面。

        【解决方案7】:

        Rails 中的“魔法”涉及method_missingmetaprogramming 的概念。 Dave Thomas of The Pragmatic Programmers 创建了一组screencasts on metaprogramming Ruby

        PHP 有一个类似的函数__call,PHP 5.3 引入了__callstatic。您可以查看这些内容,并在 Google 中搜索“php 元编程”,以获取有关在 PHP 中实现类似 Rails 的行为的一些阅读材料。

        【讨论】:

          【解决方案8】:

          我发现这个网站是一个很好的参考:

          http://www.tutorialspoint.com/ruby-on-rails-2.1/index.htm

          它在其示例中假设 MySQL。

          不过,我相信您只需在谷歌上搜索“ruby on rails 教程”就可以找到一堆堆。

          【讨论】:

            【解决方案9】:

            rails 中的 ruby​​ 元编程魔法:除了上面提到的 Black“Ruby for Rails”之外,还可以查看 Rappin “Professional Rails”和 Ediger “Advanced Rails”的书籍

            命名约定很重要:

            http://rails.wincent.com/wiki/Rails_conventions

            http://www.softiesonrails.com/2007/10/18/ruby-101-naming-conventions

            【讨论】:

              【解决方案10】:

              如果您真的想了解 Rails,请阅读您想要的 Rails 源代码。

              /Library/Ruby/Gems/1.8/gems/ 在 OSX 或冻结 rails 并可以在您的 RAILS_ROOT/vendor/ 目录中访问它

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 2015-08-23
                • 2014-01-05
                • 2023-04-08
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2013-12-13
                相关资源
                最近更新 更多