Xu Wenhao

View on GitHub
13 February 2009

配置Rails应用

by Xu Wenhao

译者注:本文原文来自Rails Guides,版本为January 3, 2009: First reasonably complete draft by Mike Gunderloy。本文根据原文,按照Creative Commons Attribution-Share Alike 3.0授权。

本指南涵盖了可用于Rails应用中的配置和初始化特性。通过本指南,你可以
1.调整Rails应用的行为
2.添加在应用启动阶段运行的代码

本指南的第一版是基于Rails 2.3的源代码撰写的。虽然不保证向前兼容,但是本指南涵盖的信息可广泛地用于Rails 2.2。

1. 初始化代码的位置

Rails(至少)提供了五个好位置来放置初始化代码:

2. 使用预初始化器

Rails允许你使用一个预初始化器,在框架自身被装载前来运行代码。如果你把代码存放在RAILS_ROOT/config/preinitializer.rb中,这些代码会在任何框架组件(Active Record, Action Pack, and so on)之前第一个被装载。如果你想要改变任何初始化过程中某些类的行为,你可以在这里(preinitializers文件)做。

3. 配置Rails组件

基本上来说,配置Rails所做的工作就是配置Rails自身以及配置Rails的各个组件。environments.rb文件以及针对特定环境的配置文件(比如config/environments/production.rb)允许你设定各个组件的设置。例如,默认的Rails2.3中的environment.rb文件中包含这样一条配置:

config.time_zone='UTC'

这是一条Rails自身的设置。如果你想要设定Rails的各个组件的设置,你也可以通过同样的这个config对象来做:

config.active_record.colorize_logging = false

Rails会使用这条设置来配置Active Record

3.1 配置Active Record

ActiveRecord::Base包含许多种配置选项:

3.2 配置Action Controller

ActionController::Base包含了一些配置设定:

3.3 配置Action View

Action View上只有不多的几个配置选项,从ActionView:Base的四个开始:

3.4 配置Action Mailer

ActionMailer::Base上由一系列可用的配置:

3.5 配置Active Resource

ActiveResource::Base中有一个配置可以设置:
logger接收一个符合Log4r或者Ruby1.8.x Logger类的接口的logger,用来从Active Resource中记录日志信息。设为nil时禁用日志功能。

3.6 配置Active Support

Active Support中有一些配置选项:

配置 Active Model

Active Model目前有一个单独的配置设置:

使用初始化器

在装载了框架以及任何gems和插件之后,Rails会开始装载初始化器(initializers)。一个初始化器是在你的应用中任何存储在/config/initializers中的ruby代码。你可以使用初始化器来存放哪些应该整个框架和插件装载后进行的配置设置。

如果你喜欢的话,你可以使用子目录来组织你的初始化器,因为Rails会渗入到initializers目录的整个文件目录层级中去。

如果你的初始化器有任何的顺序依赖关系,你可以通过命名来控制它们装载的顺序。例如,01_critical.rb会在02_normal.rb之前装载。

使用一个后初始化器(After-Initializer)

后初始化器(如同你所猜想的)会在所有的初始化器装载之后运行。你可以通过在任何Rails配置文件中设立config.after_intialize来支持一个after_initialize代码块(或者一个这种代码块的数组)。

config.after_initialize do  
    SomeClass.init  
end

你应用的一部分,特别是观察者(observers)和路径(routing)在after_initialize代码块被调用时还没有建立好。

Rails环境设置

Rails的一部分配置可以通过外部环境变量来配置。以下的环境变量会被Rails的不同部分识别出来。

tags: