app.conf

概述

app.conf 是Revel程序的配置文件,它使用 goconfig 语法,类似微软的 INI 文件。

下面是个例子:

  1. app.name=chat
  2. app.secret=pJLzyoiDe17L36mytqC912j81PfTiolHm1veQK6Grn1En3YFdB5lvEHVTwFEaWvj
  3. http.addr=
  4. http.port=9000
  5. [dev]
  6. results.pretty=true
  7. watch=true
  8. log.trace.output = off
  9. log.info.output = stderr
  10. log.warn.output = stderr
  11. log.error.output = stderr
  12. [prod]
  13. results.pretty=false
  14. watch=false
  15. log.trace.output = off
  16. log.info.output = off
  17. log.warn.output = %(app.name)s.log
  18. log.error.output = %(app.name)s.log

每个段是一种 运行模式。最上面的 key (不在任何段内)对所有的运行模式有效。这使得默认值在所有模式中适用,并且根据需要被重写。[prod] 段仅用于 生产 模式。

新建的Revel程序中默认定义了 devprod 模式, 你也可以自定义你需要的段。 程序启动时,根据 (命令行工具)“revel run” 提供的参数来选择运行模式。

自定义属性

开发者可以自定义key,并通过 revel.Config 变量 访问它们。这里公开了一些简单的 api

内建属性

应用程序设置

app.name

应用程序名称,用于控制台输出和开发web页。

例如:

  1. app.name = Booking example application

默认值: 无值


app.secret

密钥用于密码操作 (revel.Sign)。Revel 在内部使用它签署session cookies。设置为空将禁用签名。

使用 revel new新建项目时,它被设置为一个随机的字符串。

例如:

  1. app.secret = pJLzyoiDe17L36mytqC912j81PfTiolHm1veQK6Grn1En3YFdB5lvEHVTwFEaWvj

默认值: 无值

HTTP settings

http.port

监听端口

例如:

  1. http.port = 9000

http.addr

监听ip地址

Linux中, 空字符串代表通配符 – Windows中, 空字符串被转换为 "localhost"

默认值: ””


harness.port

Specifies the port for the application to listen on, when run by the harness. For example, when the harness is running, it will listen on http.port, run the application on harness.port, and reverse-proxy requests. Without the harness, the application listens on http.port directly.

默认情况下,会选择一个随​​机的空闲端口。这仅仅是必要的,由该程序限制插座访问的环境中运行时设置。By default, a random free port will be chosen. This is only necessary to set when running in an environment that restricts socket access by the program.

Default: 0


http.ssl

如果为真, Revel Web服务器将自行配置为接受SSL连接。这需要一个 X509 证书和一个 key 文件。

默认值: false

http.sslcert

指定 X509 证书文件的路径

默认值: ””

http.sslkey

指定 X509 证书 key的路径

默认值: ””

响应结果

results.chunked

确定模板渲染时是否使用 分块编码。分块编码可以减少发送到客户端的第一个字节的时间(在整个模板已经完全呈现数据之前)。

默认值: false


results.pretty

配置 RenderXmlRenderJson 生成缩进格式的 XML/JSON. 例如:

  1. results.pretty = true

默认值: false

国际化 (i18n)

i18n.default_language

为消息翻译指定默认​​的语言,如果客户端请求的语言环境未确认。如果不指定,则返回一个虚拟的信息。

例如:

  1. i18n.default_language = en

默认值: ””


指定存储用户语言环境的cookie名称

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

监视

Revel 监视项目改动,并支持几种类型文件的热重载。启用监视:

  1. watch = true

如果为假, 禁用监视, 并忽略其他相关的监视配置 watch.* (适用于生产环境)

默认值: true


watch.templates

如果为真, Revel 监视模板变化,必要时重新加载他们。

默认值: true


watch.routes

如果为真, Revel 监视 routes 文件的变化,必要时重新加载。

默认值: true


watch.code

如果为真, Revel 监视Go代码改动,必要时重新编译代码(作为反向代理运行)。

app/ 目录(包括子目录)下的代码都被监视。

默认值: true

Cookies

Revel 组件默认使用下面的 cookies:

  • REVEL_SESSION
  • REVEL_LANG
  • REVEL_FLASH
  • REVEL_ERRORS

Revel 使用这个属性作为 Revel-produced cookies前缀。这样可以在同一台主机上运行多个REVEL应用程序。

例如,

  1. cookie.prefix = MY

则对应的 cookie 名称如下:

  • MY_SESSION
  • MY_LANG
  • MY_FLASH
  • MY_ERRORS
    默认值: “REVEL”

Session

session.expires

Revel 使用这个属性设置session cookie的有效期。 Revel 使用 ParseDuration 解析字符串,默认值是 30 天。也可以设置为会话结束时过期。 请注意,客户端的行为依赖于浏览器的设置,所以结果并不总是保证。

模板

template.delimiters

指定模板左右分隔符必须这样指定分隔符 “左分隔符 右分隔符”

默认值: “{{ }}”

格式化

format.date

指定默认的日期格式,Revel在两个地方使用它:

  • 绑定日期参数到 time.Time (参考 binding)
  • 在模板中使用 date 模板函数输出日期 (参考 模板函数)
    默认值: “2006-01-02”

format.datetime

指定默认的日期时间格式,Revel在两个地方使用它:

  • 绑定日期参数到 time.Time (参考 binding)
  • 在模板中使用 datetime 模板函数输出日期 (参考 模板函数)
    默认值: “2006-01-02 15:04”

数据库

db.import

指定DB模块的 database/sql 驱动程序导入路径。

默认值: ””


db.driver

指定 database/sql 驱动程序名称 (在sql.Open中使用).

默认值: ””


db.spec

指定 database/sql 数据源名称 (在 sql.Open中使用).

默认值: ””

构建

build.tags

Build tags 构建程序的时候使用。

默认值: ””

日志

TODO

缓存

cache 模块是一个简单的堆或分布式缓存接口

cache.expires

设置缓存过期时间。在程序中调用者使用常量cache.DEFAULT获取。

它是接受一个time.ParseDuration 字符串。

(目前还不能指定默认值为 FOREVER)

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


cache.memcached

如果为真, 缓存模块使用 memcached 来代替内存缓存。

默认值: false


cache.hosts

一个逗号分隔的 memcached 主机列表。缓存条目使用确定的主机名缓存key自动分片到可用的主机中。主机可能会多次列出,以增加共享的缓存空间。

默认值: ””

计划任务

计划任务 模块允许你运行计划任务或者临时任务

时间表

时间表可以通过key来配置。

  1. cron.schedulename = @hourly

时间表的计划时间可以在执行器中提交任务时使用。例如:

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

jobs.pool

允许同时允许的任务数量。例如:

  1. jobs.pool = 4

如果为 0, 则没有数量限制

默认值: 10


jobs.selfconcurrent

如果为真, 允许一个任务运行,即使是该任务的实例仍在进行中。

默认值: false

模块

模块 通过指定导入路径将模块添加到应用程序中。例如:

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

开发计划

  • 允许使用命令行参数配置值或以其他方式在命令行中指定值。