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
?
?
?
?
?