Rails 有没有人用 Rails 做过封闭信息系统产品开发的呢?来谈谈经验?

Chorder · 2018年07月02日 · 最后由 Chorder 回复于 2018年07月15日 · 5 次阅读

可能听名字有点绕,但原谅我才疏学浅实在不知道该怎么概括。

举个例子吧,就像类似于路由器、上网行为管理、安全邮件网关这一类的设备,通常都是在操作系统之上做一些开发,并将整体系统封闭安装到类似刀片服务器这样的设备中,安装部署在企业的机房里。

想知道有没有人尝试过用Rails作为框架来开发这样的产品?

因为据我所知一般嵌入式设备都用lua、perl这样的轻量级的脚本语言来开发,但上述提到的这一类设备又不同于嵌入式设备,前者通常硬件配置比较高,后者通常需要裁剪内核,也就不一定能够支持ruby了。

最近碰巧要独立上手这样的项目,开发一个类似这样的产品,之前的版本采用php,LAMP四件套开发,到我这里,由于觉得之前的项目代码有点凌乱,加上整理了一遍原先产品的思路觉得可以围绕着模型展开开发(之前PHP版本并没有用到MVC),于是第一时间想到了用Rails来重构一遍。

可以围绕着这个需求探讨交流下经验呢?

项目近期就要正式启动了,过程中遇到的坑和经验我也会不定期过来补充和大家分享的。😄


20180715补充

之前已经完成了产品的第一个能用的版本了,但是暂时还没有进行实际的部署。来记录下这一个阶段的开发过程吧。

本次项目后台用户管理方面用了Devise做支撑,在这基础之上拓展了几个模型字段,也借此机会强化了对Devise的使用,真的是个很不错的轮子!(强烈建议Rails把Devise吸收到框架内部)

之前对Devise的使用仅仅停留在对视图的修改上,这次因为需要实现一个记录用户登录日志的功能,需要复写一些控制器,于是翻看了一遍它的源码,了解了它对登录过程的一些处理机制。顺便记录了一下Devise的简单使用过程,方便后面跟我一样的菜鸟参考:Rails Devise 基础案例

项目中还有一个部分是用到API和客户端通信的,于是学习了一下Rails API的构建。参考了这一篇文章:使用 Rails 构建 API 实践

真的是极其方便!

还有https部署的问题。

目前采用的是Apache做前置服务器,使用ProxyPass选项代理到本机的3000端口。

共收到 16 条回复

单纯的 Web 管理界面?用 Rails 我怕路由器都启动不起来。这个时候你应该转投:https://ruby-china.org/topics/31921

chunlea 回复

看 LZ 说的是 『类似刀片服务器这样的设备』,应该是硬件性能可以满足,但是系统是特别定制的。场景略小众,估计玩过的人不多,看上去难点在 Ruby 环境的准备上,这步成功了基本就等于成功 95% 了

不过这种场景下迭代应该不会很频繁吧?用 Rails 会不会有点重了,它的内存占用对这类设备来说可能是一个不能忽略的开销

IChou 回复

内存问题暂时可以不用考虑,更新迭代不会太频繁,但一年两三次应该还是至少的。关键是需求的实现上,用php和Django分别做了个原型尝试了,思来想去觉得为了编程幸福还是上rails吧。上午已经把一期项目的model画出来了,昨天用devise和layui做好了后台,后面就是把模型关联进去,再实现业务接口就可以了。正好学一学rails RESTful。

chunlea 回复

路由器Web界面之前也尝试用Rails写过,硬件用的是树莓派2代B+,操作系统是ARM体系下的Debian9,跑倒是能跑得起来,但是没经过长时间不断电运行的测试。只是普通路由器其实没有那么多的数据模型方面的需求,反而引入Rails担心会带来其他不可预期的问题。

这种东西,建议用go做。

相对PHP,go是静态编译的,所以不会凌乱。第二,部署很方便,只需要编译arm支持的版本就可以了。

老东家以前用ror做过安全漏洞扫描器的web端(硬件是一台订制的主机),虽然能做,不过还是不建议。

kimmg 回复

不建议的理由是?

rails不是万能的,这种嵌入系统有数据库吗?

Chorder 回复

理由大概有三:

  1. 部署难度 大部分的企业网管,内网流量统计设备,管理设备,是不连接外网的,那么独立部署,和gem安装的问题就会被放大,失去了rails的优势,cap也好,mina也好,在这种环境下都不好施展拳脚。
  2. 性能 rails 吃内存,并发大,这不用说了。做网关设备开发的话,除非你的接口设计做的很好,不然这块的性能问题让人头大。特别是订制设备的硬件性能,不一定像服务器那样方便扩展。
  3. 兼容性 同2,有些订制机器,或者自己裁剪过内核的其他发行版linux,一些gem的兼容性可能会有问题。
nouse 回复

一开始就说了,基于模型,并且模型很多,关联也很复杂。

kimmg 回复

谢谢耐心回复!明白了,1、2这个问题可能实施的时候真的会遇到,并发的问题应该也是即将面对的挑战。3倒还好,内核没有经过裁剪。

我司做的是类似虚拟化管理平台的东西,也是卖的硬件+软件组合,基于ESXi,用Rails写的。

现在虚拟化普及以后,基本不用担心平台性能问题,都是x64虚拟机一把梭,内核用发行版Stock就行,啥都不用干,还能享受发行版自己的安全补丁。

我们还有个类似小型路由器网关一样的虚拟机,里面跑的Ubuntu 8.04 Stock……

设备强力可以上 Rails, 不强力也可以用 Ruby 但建议 Sinatra + Sequel

luikore 回复

我来了解一下。

msg7086 回复

看来需求差不多。😄

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