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