##概览

`app.conf`为应用程序的配置文件,它使用`goconfig`的语法,与windows的ini文件类似。

示例:

app.name=chat
app.secret=pJLzyoiDe17L36mytqC912j81PfTiolHm1veQK6Grn1En3YFdB5lvEHVTwFEaWvj
http.addr=
http.port=9000

[dev]
results.pretty=true
watch=true

log.trace.output = off
log.info.output = stderr
log.warn.output = stderr
log.error.output = stderr

[prod]
results.pretty=false
watch=false

log.trace.output = off
log.info.output = off
log.warn.output = %(app.name)s.log
log.error.output = %(app.name)s.log

每一个段落都是一个运行模式,在最顶层不属于任何一个段落的字段,应用于所有运行模式。`[prod]`段落下的字段应用于生产模式。这样允许为所有的运行模式提供默认值,然后根据需要覆盖。

通过给`revel run`参数可以给指定应用程序相应的运行模式。

##自定义属性

开发者可以通过`revel.Config`变量访问自定义属性,它暴露了简单的api。

##内建属性

**应用程序设置**

- app.name

人类可读的应用程序名称。通常用于一些控制台输出和开发的网页。示例:

app.name = Booking example application

默认值:空

- app.secret

密钥用于加密操作(revel.Sign)。revel通常用它进行会话cookie的签名。通过设置空字符串来禁用签名功能。

初始化一个新的项目时,它被设置为一个随机的字符串(如使用`revel new`创建项目时)。示例:

app.secret = pJLzyoiDe17L36mytqC912j81PfTiolHm1veQK6Grn1En3YFdB5lvEHVTwFEaWvj

默认值:空

**HTTP设置**

- http.port

监听的端口。示例:

http.port = 9000

- http.addr

用于监听的IP地址。在linux上,空的字符串表示通配符- 在windows上,空的字符串会被转为"localhost"

默认值:””

- harness.port

当被harness前置运行时,用于指定应用程序的监听端口。例如, 当harness运行时, 它会在http.port端口监听, 然后在harness.port端口运行程序, 然后对请求进行反向代理。 如果没有harness, 应用程序则直接监听http.port.

默认情况下,会选择一个随机的端口。这仅仅用于当运行在环境限制使用套接字访问程序时。

默认:0

- http.ssl

如果为true, revel会配置自己允许接受SSL请求, 这需要X509证书和密钥文件。

默认值:false

- http.sslcert

指定X509证书文件的路径

默认值: ””

- http.sslkey

指定X509证书密钥

默认值: ””

**Results**

- results.chunked

判断是否使用chunked编码来渲染模板。chunked编码可以在模板被完全渲染之前向客户端发送首个字节用以缩短时间。

默认值:false

- results.pretty

配置`RenderXml`与`RenderJson`产生缩进的`XML/JSON`。示例:

results.pretty = true

默认值:false

**国际化 (i18n)**

- i18n.default_language

当请求的local不被接受时,使用的默认语言。如果未指定,则向请求返回虚拟的消息。示例:

i18n.default_language = en

默认值:””

- i18n.cookie

存储用于指定用户local设置的cookie名。

默认值:“%(cookie.prefix)_LANG” (see cookie.prefix)

**观察器**

revel观察整个项目,并且支持多种类型来源的热重载。开启观察器:

watch = true

如果是false, 什么都不会被观察,并忽略其他`watch.*`配置属性. (这可以适当的用于生产部署)

默认值:true

- watch.templates

如果是true, revel会观察试图的变化并在必要的时候重载它们

默认值:true

- watch.routes
如果为true, revel会观察路由文件的变化并在必要的时候重载它

默认值:true

- watch.code

如果为true, revel会观察Go源码的变化并在必要时重新编译应用程序。(这需要运行harness作为应用程序的前置)

应用程序的`app/`目录的源码都会被观察。(或者任何子目录下的源码)

默认值:true

**Cookies**

revel组建默认使用下列cookies:

REVEL_SESSION
REVEL_LANG
REVEL_FLASH
REVEL_ERRORS

- cookie.prefix

revel在cookie名字中使用的前缀. 这是为了让多个revel程序存在一个域上。示例:

cookie.prefix = MY

这样将会导致以下cookie名:

MY_SESSION
MY_LANG
MY_FLASH
MY_ERRORS

默认值:“REVEL”

**格式化**

- format.date

指定默认情况下日期的格式化字符串. revel将在两个地方使用它:

绑定日期参数至`time.Time`类型

使用模板函数`date`输出日期

默认值:“2006-01-02”

- format.datetime

指定默认情况下时间的格式化字符串. revel将在两个地方使用它:

绑定日期参数至`time.Time`类型

使用模板函数`date`输出日期

默认值:“2006-01-02 15:04”

**数据库**

- db.import

指定需要导入的`database/sql`驱动模块的路径

默认值:””

- db.driver

指定`database/sql`接口类型驱动的名称(用于`sql.Open`)

默认值:””

- db.spec

指定`database/sql`接口类型驱动的数据库名(用于`sql.Open`)

默认值:””

**构建**

- build.tags

构建程序是所指定的构建标签

默认值:””

**Logging**

TODO (移步: http://www.cnblogs.com/hangxin1940/p/3270581.html)

**Cache**

缓存模块接口。

- cache.expires

设置缓存数据的过期时间。用于调用者传递`cache.DEFAULT`常量。

这个字符串必须能被`time.ParseDuration`所接受。

(目前它不能指定为FOREVER)

默认值:“1h” (1小时)

- cache.memcached

如果是true, 将使用memcached作为内存型缓存。

默认值:false

- cache.hosts

一个用逗号分隔的memcached地址列表。缓存内容会动态的存储。可以多次重复地址以提高它的分配比重。

默认值:””

**计划任务**

jobs模块可以用来执行计划任务或者临时任务。

- 具名计划任务

命名的cron计划任务可以如下方式设置名称:

cron.schedulename = @hourly

该计划任务可以在被引用后提交给任务执行器。示例:

jobs.Schedule("cron.schedulename", job)

- jobs.pool

允许任务同时运行的数量. 示例:

jobs.pool = 4

如果是0, 则没有限制.

默认值:10

- jobs.selfconcurrent

如果是true, 允许同一个任务在之前没有执行完的情况下,再次运行。

默认值:false

**模块**

modul允许通过它们的导入路径来给应用程序添加一个模块。示例:

module.testrunner = github.com/robfig/revel/modules/testrunner

05-11 20:05