我正在尝试学习rails应用程序的生命周期.application_controller.rb何时运行?每次改变或每次请求时它只是一次吗?
我想知道以下文件:
config/environments/*.rb(开发,生产或测试,取决于当前模式)
的boot.rb
的environment.rb
的routes.rb
我问这个的原因之一是,我想知道哪里是个好地方
初始化代码
自定义配置数据
编辑:
@Gdeglin的答案很好,但我真的很想知道每个文件何时运行.
ApplicationController是所有控制器的父类.由于这个原因,所有控制器都可以使用其中声明的方法.
ApplicationController是您想要应用于应用程序中所有控制器的过滤器的便利位置,或者是您希望为所有控制器提供的方法.
config/environments/*.rb中的文件会覆盖默认config/enviornment.rb文件中的设置,具体取决于运行服务器的环境(开发/生产).一个例子是在开发错误被打印到屏幕上并且在生产中返回通用错误页面.此设置位于config/environments/development.rb中
boot.rb用作rails初始化过程的一部分.您通常不需要,也可能不应该触摸它.
environment.rb是应用程序的通用配置文件.
routes.rb用于定义应用程序如何处理对特定URL的请求.例如,您可能希望将所有404请求转到特定操作,而不是由默认错误处理程序处理:
map.connect '*path', :controller => 'home', :action => 'on_404'
它也是实现RESTful应用程序的重要部分.
初始化代码和自定义配置数据都应放在enviornment.rb中(阅读此文件中的注释).如果您希望某些代码仅在开发期间或仅在生产中运行,请将其分别放在config/environments/development.rb或config/environments/production.rb中.
编辑:
可以在此处获得有关何时在初始化期间运行这些文件的详细信息:
http://toolmantim.com/articles/environments_and_the_rails_initialisation_process https://github.com/toolmantim/toolmantim/blob/master/articles/environments_and_the_rails_initialisation_process.haml
基本上步骤是:
加载了Rails初始化程序(http://api.rubyonrails.org/classes/Rails/Initializer.html)
rails初始化程序设置日志记录,然后加载environment.rb
environment.rb加载boot.rb
boot.rb设置RAILS_ROOT
常量并将rails库和应用程序代码添加到LOAD_PATH
environment.rb执行Rails::Initializer.run
.
rails框架已加载(ActiveRecord,ActionMailer等)
加载了您环境的特定配置文件(config/environments/development.rb.)
after_initialize
而to_prepare
如果您所创建的任何回调都执行
Rails已完成加载并准备好处理请求