ruby on rails如何工作?

时间:2008-10-15 00:07:43

标签: ruby-on-rails ruby

我是一名熟悉Ruby的PHP开发人员。我想学习Ruby on Rails,但是我遇到的大部分资源都将RoR功能视为“神奇” - 即它具有一定的内部一致性,但是不要问它是如何工作的, MySQL等等。

无论如何,我想深入了解RoR的工作原理,构建它的设计决策等等。特别是我对ActiveRecord感兴趣,但我真的在寻找整个包。

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

10 个答案:

答案 0 :(得分:22)

“使用Rails进行敏捷Web开发”和“The Rails Way”这些书都非常好。 “Active Active Record”对于Active Record来说非常深入,但是并没有触及太多其他内容。播客Railscasts有时只使用魔术,但有时它会解释实际发生的事情。诸如Art of Mission之类的各种博客都可以进入您所寻找的目标。

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

答案 1 :(得分:13)

这里有两个区域可以单独检查:

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

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

答案 2 :(得分:9)

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

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

答案 3 :(得分:7)

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

答案 4 :(得分:5)

这是对你的问题的一个切向答案,但我也是从PHP开发到Ruby / Rails dev,这对我来说是一个很大的转变。作为PHP开发人员,我们已经习惯于深入了解细节,发言,并且不会被阻止在内心深处。

按照设计,Rails是一个黑盒子。你应该学习Rails,几乎就像语言一样。这是一种思考web开发的新方式,特别是从PHP开发的角度来看,尽管这种想法在编程时并不罕见。

不必费心去看看引擎盖可能是开始做事的最佳方式“Rails方式。”

答案 5 :(得分:5)

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

答案 6 :(得分:4)

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

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

它在其示例中假设MySQL。

我相信你可以通过谷歌上搜索“ruby on rails教程”来找到大堆和堆。不过。

答案 7 :(得分:4)

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

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

答案 8 :(得分:1)

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

答案 9 :(得分:0)

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

OSL上的

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