go-on-rails 是一个 Rails 的 generator,已经发布为 gem,用来在 Rails 项目中集成或是开发 Golang 应用。
项目地址:https://github.com/railstack/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。
【UPDATE】本项目无意间获得了 matz 的转推加持:https://twitter.com/yukihiro_matz/status/1031768139858501632