Dex*_*Dex 15 ruby-on-rails ruby-on-rails-3
有人可以指出我正确的方向为rails模块实例化的顺序.
我想要找到的主要内容是:
1)何时加载宝石?
2)何时加载config/initializers/*?
3)什么时候在routes.rb中命名路由被处理?
Dav*_* J. 13
通过puts在Rails应用程序中添加一些语句,可以轻松回答您的问题.(似乎有很多人不愿意深入挖掘并做到这一点,但我真的推荐它!)所以,仅通过实验和观察,这就是你提到的事情的顺序:
boot.rbconfig/initializers/*routes.rb这里有一些细节:
boot.rb这通过使用bundler加载应用程序gem:
require 'rubygems'
# Set up gems listed in the Gemfile.
ENV['BUNDLE_GEMFILE'] ||= File.expand_path('../../Gemfile', __FILE__)
require 'bundler/setup' if File.exists?(ENV['BUNDLE_GEMFILE'])
Run Code Online (Sandbox Code Playgroud)
config/initializers/*它们按字母顺序运行.
如果你很好奇触发这个是什么,请看一下railties源代码中的engine.rb.(知道Rails应用程序是Rails引擎的子类很有用.)
initializer :load_config_initializers do
config.paths["config/initializers"].existent.sort.each do |initializer|
load(initializer)
end
end
Run Code Online (Sandbox Code Playgroud)
routes.rb通过观察,我看到接下来发生了路线图(规范).
但是查看详细信息更为复杂,所以如果您有兴趣,我会阅读SO:从Engines控制路由加载顺序,也许可以查看engine.rb中的:add_routing_paths初始化程序.
查看关于初始化过程的这篇疯狂详细(和长篇)文档:
http://guides.rubyonrails.org/initialization.html
| 归档时间: |
|
| 查看次数: |
10201 次 |
| 最近记录: |