如何阅读Rails示例项目的源代码?

时间:2008-12-29 12:04:09

标签: ruby-on-rails

建议阅读示例项目的源代码,例如Beast和Bort,这是学习rails的好方法。但是我发现自己在阅读这些项目的源代码时迷失了,因为包含的插件可能会带来一些没有任何提示的奇怪代码,例如"require""include"。你能分享你的rails代码阅读体验吗?非常感谢。

3 个答案:

答案 0 :(得分:4)

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

当你的路线告诉rails寻找“demo / sub / hello”时,它被转换成控制器的全名(Demo :: Sub :: HelloController),它们试图调用它们。 Ruby无法找到这个类并调用const_missing,这使得rails将名称转换为文件,在本例中为demo / sub / hello_controller(:: = /,capitals而不是first = _,在下划线方法下查找Inflections)。然后Rails需要这个文件并检查正确的类定义。

Rails在ruby的加载路径(app / controllers,app / models,app / helpers,lib,vendor)中添加了几个目录,并且这些目录中的demo / sub / hello_controller.rb将满足require。但是不在应用程序/控制器中的控制器需要特别注意那些视图。

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

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

end

而不是

module Demo
  module Sub
    class HelloController < ActionController::Base

    end
  end
end

答案 1 :(得分:0)

Rails代码主要是ruby代码。掌握红宝石,你在阅读轨道代码时都没有问题。 祝你好运。

答案 2 :(得分:0)

  1. 开发一个简单的rails项目,直到你有基本的Rails东西。因为一旦你知道标准的Rails,你就会更快地识别插件功能
  2. 更好地了解ruby,因为Rails是用它写的。例如,有一本名​​为Ruby for Rails的书,这是一个很好的起点。
  3. 我喜欢先看看从上到下的测试(集成,控制器,模型)