我是一名熟悉Ruby的PHP开发人员.我想学习Ruby on Rails,但是我遇到的大部分资源都将RoR功能视为"神奇" - 即它具有一定的内部一致性,但是不要问它是如何工作的, MySQL等
无论如何,我想深入了解RoR的工作原理,构建它的设计决策等等.特别是我对ActiveRecord感兴趣,但我真的在寻找整个包.
欢迎任何书籍/网站/建议.
"使用Rails进行敏捷Web开发"和"The Rails Way"这些书都非常好."Active Active Record"对于Active Record来说非常深入,但是并没有触及太多其他内容.播客Railscasts有时只使用魔术,但有时它会解释实际发生的事情.各种博客,如Art of Mission,可以进入你想要的东西.
此外,使用ruby-debug gem可以更好地了解正在发生的事情 - 您可以进入后台运行的内容.
这里有两个区域可以单独检查:
一般概念(包括设计模式,一般态度原则,如DRY和CoC甚至敏捷性等),因为它们是Rails中许多设计决策背后的原则.任何这些概念都可以独立于Rails进行研究(因为它们是通用编程概念).在深入挖掘之前,至少要对这些有一些了解是很好的.关于网络上的这些一般原则有许多来源(前面提到的Martin Fowler的网站是掌握这些概念的更好的来源之一).
Rails将这些概念实现到其语料库中的方式.这里有两件事要记住.由于Rails大量使用其母语的特性,因此理解Ruby的特性(例如mixins和大量Ruby的动态特性)至关重要.最后要理解的是Rails 如何使用这些功能,即.它如何分解为类和模块,在运行中动态创建了多少功能等等.为此,我强烈推荐David A. Black的书籍Ruby for Rails(这完全是关于Ruby,它的特点和Rails使用它们的方式).虽然这本书可能有点过时,但我认为它的内容仍然非常宝贵.
如果您真的想知道它是如何工作的,您可以查看源代码.通过在线API文档,您可以在文档页面中查看每种方法的源代码.
Rails中的ActiveRecord基于Martin Fowler的Active Record模式.它基本上是一个ORM(对象关系映射器).就ORM而言,它甚至都不是那么复杂.使用Hibernate的Java Persistence可以很好地概述常见的ORM概念.
这个也适合这里 - > http://railsforphp.com/
这是对你的问题的一个切向答案,但我也是从PHP开发到Ruby/Rails dev,这对我来说是一个很大的转变.作为PHP开发人员,我们已经习惯于进入细节,说话,而不是被阻止在幕后.
按照设计,Rails是一个黑盒子.你应该学习Rails,几乎就像语言一样.这是一种思考web开发的新方法,特别是从PHP开发的角度来看,尽管这种想法在一般情况下编程并不少见.
不用打扰看看引擎盖可能是开始做"Rails方式"的最佳方式.
Jamis Buck 在他的博客上有一系列很好的" Under the Hood "文章,涵盖了Rails内部的一些方面.