2008-12-29 25 views
2

阅读示例项目的源代码,如Beast和Bort,被推荐为学习rails的好方法。但是我发现自己迷失在阅读这些项目的源代码中,导致包含的插件可能会带来一些奇怪的代码而没有任何提示,例如"require""include"。你能分享你的导轨代码阅读体验吗?很多感谢。如何阅读Rails示例项目的源代码?

回答

4

学习使用rails时,需要知道的最重要的事情之一是它如何加载您编写的代码。假设你在app/controllers/demo/sub目录中有一个HelloController。如果您生成此控制器,它将具有Demo :: Sub :: HelloController的正确名称。

当你的路径告诉rails寻找“demo/sub/hello”时,它被转换为控制器的全名(Demo :: Sub :: HelloController),它们会尝试调用哪个rails。 Ruby无法找到这个类并调用const_missing,这使得rails将名称转换为文件,在这种情况下,demo/sub/hello_controller(:: = /,除first = _以外的首都,在下划线方法下查找Inflections)。然后Rails需要这个文件并检查正确的类定义。

Rails在ruby的加载路径(app/controllers,app/models,app/helpers,lib,vendor)中添加了几个目录,其中任何目录下的demo/sub/hello_controller.rb都将满足要求。但不在应用程序/控制器中的控制器需要特别注意那里的意见。

此外,这适用于名称空间,只有它会查找一个目录。因此,引用Demo :: Sub将查找demo/sub目录。这可以让你放弃类的标准定义,所以你可以做的

class Demo::Sub::HelloController < ActionController::Base 

end 

代替

module Demo 
    module Sub 
    class HelloController < ActionController::Base 

    end 
    end 
end 
0

Rails代码主要是ruby代码。掌握红宝石,你将没有任何问题在阅读栏的代码。 祝你好运。

+0

是的,我同意。但是,在这个过程中是否有任何轨道魔法发生应该向像我这样的新手解释?还是有简单的方法来确定一个奇怪的方法来自哪里? – eric2323223 2008-12-29 13:40:56

0
  1. 开发一个简单的Rails项目,直到你有基本的Rails的东西了。因为一旦你知道标准的Rails,你将更快地识别插件功能
  2. 由于Rails已经写入,所以更好地了解ruby。例如,有一本名​​为Ruby for Rails的书,这是一个很好的起点。
  3. 我喜欢看看从上到下的测试(积分,控制器,型号)
+0

看着测试是一个好点,投票:) – eric2323223 2008-12-30 06:41:34