Rails 3初始化命令

Dex*_*Dex 15 ruby-on-rails ruby-on-rails-3

有人可以指出我正确的方向为rails模块实例化的顺序.

我想要找到的主要内容是:

1)何时加载宝石?

2)何时加载config/initializers/*?

3)什么时候在routes.rb中命名路由被处理?

Dav*_* J. 13

通过puts在Rails应用程序中添加一些语句,可以轻松回答您的问题.(似乎有很多人不愿意深入挖掘并做到这一点,但我真的推荐它!)所以,仅通过实验和观察,这就是你提到的事情的顺序:

  1. boot.rb
  2. config/initializers/*
  3. routes.rb

这里有一些细节:

1. 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)

2. 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)

3. routes.rb

通过观察,我看到接下来发生了路线图(规范).

但是查看详细信息更为复杂,所以如果您有兴趣,我会阅读SO:从Engines控制路由加载顺序,也许可以查看engine.rb的:add_routing_paths初始化程序.


joh*_*ley 9

查看关于初始化过程的这篇疯狂详细(和长篇)文档:

http://guides.rubyonrails.org/initialization.html

  • @cowboycoded你可能想删除你博客帖子的链接,因为它不再有效 (3认同)
  • 为Rails指南([guides.rubyonrails.org](http://guides.rubyonrails.org/index.html))通常位置好像它具有的[Rails的初始化进程引导](HTTP稍微较新的版本: //guides.rubyonrails.org/initialization.html).最好是链接那里,因为它有所有其他指南(ryanbiggs.com网站只有初始化指南). (2认同)