Rails在初始化过程中如何设置根目录?

时间:2018-09-12 07:16:23

标签: ruby-on-rails

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

他们所做的解释主要是如何通过inherited钩子设置应用程序的类,然后如何通过#initialize方法通过委派将其实例化。

但是,令我遗憾的是,他们很大程度上忽略了Rails如何查找并设置其根目录,以便实例化该应用程序:/Engine/Configuration-类。

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

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

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

1 个答案:

答案 0 :(得分:0)

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

您可以在source code here中看到定义了Rails.application.config的方法以及确定应用程序根目录的方法:

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

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

相关问题