在Rails3.0中,Rails::Application对象是一个Rails引擎,但是,Rails::Application对象还承担了协调整个应用启动流程的责任。
这个是application.rb源代码地址。
首先,我们可以看到Application是Engine的子类,因而Application类继承了Engine的所有功能。
接下来,Application类用autoload方法加载了一系列启动过程中需要用到的文件。这个后面会说到。
再下来,我们来到Application类的类方法定义中。
1.inherited方法中,继承了engine中相应的方法、将正在开发的应用名称的值赋给Rails.app_class、将正在开发的应用中的lib文件路径添加到全局路径变量中。
这里有一个find_root(base.called_from)的方法调用,其中,base.called_from的定义在engine.rb这个文件里,这个方法调用最终返回我们正在开发的rails项目的根目录。