redmine总体结构分析

1. 背景

对于刚入门学习redmine开发的小白来说了解redmine项目的代码结构能够帮助我们快速掌握各部分的分工与关系,协助定位需要修改代码位置。

2. 代码结构

  1. /app 此文件夹下存放着完成redmine工作逻辑的核心代码。 代码按照经典的MVC的方式组织。

  2. /app/models 模型文件, 每个文件与数据库中的一张表对应, 负责数据的读取和写入以及数据的基本逻辑处理。

  3. /app/controllers 控制器文件。 将模型和视图连接起来。 页面请求到来后, 由控制器调用模型, 完成数据处理后, 渲染视图文件并呈现给用户。

  4. /app/views 视图文件。

  5. /app/helpers helper 为视图文件提供帮助方法。 一些渲染页面中基本的逻辑可以以函数的形式放在helper中, 供views文件使用。

  6. /config 系统的基本配置文件存放于此。

  7. /config/configuration.yml 配置系统的邮件发送,字体等信息。

  8. /config/database.yml 配置数据库的连接信息。

  9. /config/routes.rb 路由信息。 指明了每个请求的url如何与相应的控制器关联.

  10. /config/locale # 翻译信息。 Redmine支持多语言, 用户设定不同的语言, 系统就会切换到相应的语言。

  11. /db 数据库迁移文件存放于此。

  12. /files redmine的附件存放于此。 备份redmine数据时, 不仅要备份数据库, 还要备份该文件夹。

  13. /lib redmine系统使用的众多工具包

  14. /lib/tasks # 此文件夹下存放着redmine的rake文件。 通过这些文件, 我们可以在终端敲入简单的命令,完成复杂的任务。 另外, 我们还可以通过编写rake文件,完成某些任务。

  15. /log 日志。

  16. /plugins redmine插件

  17. /public redmine系统的javascript, css, 图片等文件存放于此

3. 响应流程

redmine总体结构分析

  1. 用户发起HTTP请求。

  2. 系统通过路由规则为请求寻找响应的控制器和具体的action。

  3. 请求被转向相应的控制器和具体的action。

  4. 控制器委托模型获取数据,并完成具体的任务。

  5. 模型查询数据库,获取数据,并返回给控制器。

  6. 控制器用得到的数据渲染视图。

  7. 渲染后的视图,也就是浏览器可识别的代码,被返回至客户端。