Ruby on rails Rails在初始化期间如何设置根目录?

Ruby on rails Rails在初始化期间如何设置根目录?,ruby-on-rails,Ruby On Rails,关于rails如何创建应用程序,有两篇博客文章和一篇rails文章,但都没有解释rails如何查找和设置自己的根目录 他们真正解释的是如何通过继承的钩子来设置应用程序的类,以及如何通过#initialize-方法通过委托来实例化应用程序 然而,令我遗憾的是,他们忽略了Rails如何查找和设置其根目录,我需要根目录来实例化应用程序:/Engine和/Configuration-类 例如,在第一篇博文中,Rails.application.root已经存在: Rails::Serve

关于rails如何创建应用程序,有两篇博客文章和一篇rails文章,但都没有解释rails如何查找和设置自己的根目录

他们真正解释的是如何通过
继承的
钩子来设置应用程序的类,以及如何通过
#initialize
-方法通过委托来实例化应用程序

然而,令我遗憾的是,他们忽略了Rails如何查找和设置其根目录,我需要根目录来实例化应用程序:
/Engine
/Configuration
-类

例如,在第一篇博文中,
Rails.application.root
已经存在:

    Rails::Server.new.tap do |server|
    require APP_PATH
    Dir.chdir(Rails.application.root)
    server.start

Rails在何处以及如何设置其根目录?

Rails.application
root
委托给其配置对象,该对象是
Rails::configuration
的实例。该类是
Rails::Engine::Configuration
的子类。根目录作为初始化参数传入

您可以看到Rails.application.config正在定义中,其中包含一个确定应用程序根的方法:

#find_root
方法使用另一种方法,向上遍历目录路径,直到找到包含
config.ru
的文件夹

def config #:nodoc:
  @config ||= Application::Configuration.new(self.class.find_root(self.class.called_from))
end