Rails Rails API 项目的后台 怎样写会比较好呢

jicheng1014 · 2019年05月10日 · 最后由 317583395 回复于 2019年05月13日 · 2531 次阅读

公司有个新的 rails api 后端项目,除了处理正常的业务之外,还需要一个管理后台

之前管理后台也是跟前端一样的 rails api + react + antd , 但是后来前端实在忙不过来,就自行实现

但每次写完 api, 再自行实现 react 还是感觉特别别扭,于是就想看看是否有别的方案来解决这个问题

由于后台也就是查看下数据,并没有太复杂的后台处理业务需求,

初步的想法是把这个 rails api 项目 还原成传统的 rails, 之后业务还是用 rails active model serializer 跑

但是其实这样做的话就需要引入很多 rails api 本来不需要的 middlewares, rpm 10k 左右,机器就两台,如果就因为跑个后台,而拖慢了整体,有点不划算

也想过重新开个新项目,数据库用之前的 api 的数据库,但是觉得这样做还要再次写 model, 似乎也不太方便。

另外还想过用 rails engine 包一下之前的 app, 或者开个新项目把 app 目录软链到原来的老项目上之类的,也不知道这么做到底科学不科学

所以问问大家 有啥好办法来处理这个问题呢

rails engine 放公共代码,同时共享给 api 和后台两个项目,目前的项目是这么做的。

你可以参考下 manageiq 的拆法

jicheng1014 回复

管理后台就不要用什么前后端分离了,用 rails 一把梭,把 api 和 admin 放一块很好,我做的项目 api 和 admin 都放一块的,后台没有什么访问量,无非是多了些代码

kayakjiang 回复

再补充一点,我写 api 都是直接用 rails 或者 grape, 没有用 rails new xxx -api, 其实多几个 middlewares 对性能没有影响的,当然这是我的感觉。

重开一个项目,就是 model 需要重用,可以参考 git submodules 的用法,在原来的项目中,将 app/model 单独建一个 git,原来项目用 submodule 引入 model,每次 model 有改动就单独提交,这样你重开一个项目还是用 submodules 引入所有的 model。这样对原来的 api 项目就没没什么侵入了。

人生苦短,早用 activeadmin。 新建一个后台项目,迁移都在 api 项目运行,后台项目直接使用 api 的 schema.rb

https://medium.com/alturasoluciones/how-to-set-up-rails-api-app-to-use-activeadmin-79b418df8aad

https://blog.heroku.com/a-rock-solid-modern-web-stack

放一个项目里没什么问题,就算你原来是个 api mode 的项目,也可以往里加 activeadmin

放一个项目没问题啊 ActionController::API ActionController::Base 不是走的不同的 middleware 吗

瞎折腾啥,大家都会用 postman,让他们自己玩去

stargwq 回复

😆 不能老让小姐姐们玩 postman 不是么......

最后还是决定牺牲一点性能,在 rails-api 上 继续写传统 view, 复杂点的就 webpacker react 跑一下凑凑热闹

在 pv 没到 10m 之前 性能损失在 20% 以下都还能接受

  1. 有多少性能损失得测过才知道。
  2. 用 Rails 默认栈不应该成为思想负担。
  3. 人力资源比服务器更贵。

开发机考虑性能多虑了,主要是开发效率是不是真的高,玩起来是不是真的边呢😏

something like active_admin comes to my mind, straightforward and save time.

需要 登录 后方可回复, 如果你还没有账号请 注册新账号