Rails_初始化历程_和_修改默认配置的接口

Rails_初始化过程_和_修改默认配置的接口

 

Java Servlet 的初始化过程对配置和扩展出框架必不可少。

同样,对rails,明白其初始化过程,才能更写出合理的代码,也可以根据需要配置和扩展~

 

分析了半天script/server script/console 的代码后发现,前人已经总结了很好的文章,可以暂时节省不少时间~

 

一。 The Rails Initialization Process

 

额外强调一下enviroment.rb和config/environments/#{environment}.rb的加载顺序:

先执行enviroment.rb的代码(注意这是代码,不是配置文件):

  Rails::Initializer.run do |config|

  ...

  end

  #注意这里,end之外还可以有配置,run之前也可以有配置,但这都不合理,后面会说到。

 

再加载#{environment}.rb执行。

再执行enviroment.rb的run之后的代码。

 

简而言之:enviroment.rb的run代码会先执行,之后执行#{environment}.rb,所以,#{environment}.rb的配置可以覆盖enviroment.rb的run代码中的配置,但是 不会覆盖 run之外的配置。

 

看下源代码:

    def self.run(command = :process, configuration = Configuration.new)

      yield configuration if block_given? #先执行了block,之后才执行下面的配置,如#{environment}.rb配置

      initializer = new configuration

      initializer.send(command)

      initializer

    end

 

 

二。 Configuring Rails Applications good spots to place initialization

 

明白了一。里的内容,这个内容其实不必要。为了更偷懒,总结下初始化的接入点。five good spots to place initialization code