go-on-rails 是一个 Rails 的 generator,已经发布为 gem,用来在 Rails 项目中集成或是开发 Golang 应用。
项目地址:github.com/goonr/go-on…。
本文不会讲述详细的使用方法,所以先把现有的几个示例教程放一下:
- 简单示例 仿照 Rails guides 里那个入门的 demo,演示如何使用 go-on-rails 创建和生成一个简单 blog 的 Go API。
- 高级教程 如何创建一个 Golang 项目,并和 rails_admin, devise, cancancan 等集成,为 Go 项目快速增加一个管理后台。同时该项目演示了如何使用 Rails 5.1 新发布的 webpacker 工具,并利用 React 制作独立的前端界面在 Rails 中调用 Go 接口。
- 如何从 Go API 读取 Rails session 讲解如何在一个 go-on-rails 生成的 Go 接口中读取 Rails 的 session 做用户验证
go-on-rails 做些什么
- 使用 Rails 创建 model,然后 go-on-rails 根据 model 的定义生成相应 Go 的数据结构以及一些基本的 CRUD 方法、添加 validation,同时也生成了分页等方法
- 对以上生成的这些方法生成 godoc 文档
- 根据 Rails 的数据库配置,生成数据库连接配置
- 一些命令行工具帮助自动化常见任务,比如安装默认依赖、 format 生成的文件、查看 godoc 文档等
为什么使用 go-on-rails
这个工具的目标用户首先是 Rails 开发者,想进行 Golang 的学习或者是想在 Rails 项目中集成 Go API。也就是要对 Rails 熟悉,否则可能很多人不会为了尝试这个工具来学习 Rails 的。
接下来主要说一下为什么会有这个 gem,或者说使用 Rails 开发 Go 项目真的有什么优势吗?
-
配置管理。比如通过在 Rails 中对数据库进行配置,生成的 Go 项目会根据 Rails 的配置生成相应环境数据库的连接配置。同样,其它的配置也可以利用 Rails 的配置来共享使用。
-
利用 Rails 丰富的工具链,比如用 rails db:seed 写入测试数据,利用 rails console 对数据进行测试等,以及数据库管理部分的 rails db:* 等操作。
-
方便对数据库进行各种 migrations 的管理,不用手写 schema,延续了 Rails 程序员开发过程中对数据库的操作习惯。
-
model 的定义同样会方便 Rails 开发者的习惯,go-on-rails 会对 association 和 validation 中的大部分生成操作函数。
-
Rails 5.1 中 webpacker 的发布,更突显了 Rails 在做“Web 集成开发环境”方面的新能力。更多前后端分离系统的出现,使在 Rails 中集成 Go API 的重复工作量大大降低,只需要修改一下调用的链接可能就完成了一次系统改造。另外,使用 webpacker 可以很方便的制作前端页面来调用 Go API。关于如何使用可以看这里的教程。
-
对于某些中小规模的系统,通过在 Rails 中集成 Go API 可以改善一些接口的性能,而不需要对系统架构进行重构。
go-on-rails 目前还在开发过程中,欢迎各种参与和 pr。