我们有一个只执行HTTP API的Rails应用程序。在客户端,目前使用的是Ember.js。Ember并没有给我们留下太多的印象,我们非常喜欢Meteor.js的方法。因此,我们希望与Meteor.js交换客户端,并通过使用数据分发协议(DDP)的websocket与Rails服务器通信,这样我们就可以继续使用Rails中的模型、邮件和控制器。实现DDP的服务器端应该很容易。
然而,我们不确定如何让Rails与websocket对话。我们发现了Reel,它似乎可以在独立环境中轻松地接受websocket请求。Reel看起来很棒,因为我们无论如何都想在赛璐珞堆栈的顶部实现DDP。但是在Rails环境中运行Reel呢?我们需要"铁轨赛跑者"吗?我们希望继续使用现有的控制器来调度传入的请求(比如添加/更改/删除资源)。如果没有来自Rack的请求,这可能吗?
欢迎提供任何意见。
有点晚了,但我已经在Ruby中实现了DDP,您可以在这里查看:
https://github.com/d-snp/ruby-ddp-server
它还包括EJSON的实现。它建立在赛璐珞网络套接字之上,可以简单地作为机架应用程序运行。
我已经与RethinkDB进行了集成,可以作为构建自己的集合实现的参考。
https://github.com/d-snp/ruby-ddp-server-rethinkdb
我还制作了一个示例聊天应用程序,可以在这里找到:
https://github.com/d-snp/celluloid-rethinkdb-chat
这也是我一直渴望做的事情,集成旧的"遗留"Rails代码。这是我找到的最好的方法:
由于您不会使用任何Rails路由器/控制器/视图,而只是能够读取数据并将其推送到客户端,因此我建议您使用Rails为数据库创建JSON API,并部署代码,然后在Meteor中,您可以通过http包使用数据,这将定期在服务器上发生,并用您需要的规范化数据填充MongoDB,那么它将为浏览器客户端提供服务。
我正在开发这样一个应用程序,该应用程序将在Mongo中保留数据的规范化版本,并在mySql中(通过Rails)保留数据的关系版本。这样,我就可以保留我不想在JS中重写的遗留Rails功能,并在我最需要的一个页面上获得Meteor的好处。