使用http在Rails中建模数据共享

时间:2018-11-13 10:10:05

标签: ruby-on-rails design-patterns soa

我有两个Rails应用程序。假设App1App2App1的模型是我业务的核心,App2希望使用它。

我正在考虑的一种方法是创建模仿ActiveRecord功能的PORO,但是它不是与数据库交互,而是与App1HTTP进行交互。

例如:

https

我不确定这种方法是否太聪明或正确,因为我们为对象提供了class User < NetworkRecord def self.find(id) new.find(id) end def find(id) endpoint = 'https:app1.com/user' get(endpoint, { id: id }) end end class NetworkRecord def get(endpoint, params) Httparty.get(endpoint, params) end end 的某些功能,而没有继承自该对象。

如果您知道实现同一目标的更好方法,请告诉我。

1 个答案:

答案 0 :(得分:1)

感觉就像您在思考与ActiveResource一样,它为跨REST接口的对象提供了类似于ActiveRecord的接口。

如果您打算将两个代码库完全分开,则可能需要采用某种形式的基于API的关系。您必须要小心的一件事是,使用这种方法会产生多少网络流量。如果这两个应用程序将成为您构建的API的唯一用户,那么您就有机会根据您的用例构建更多自定义的终结点,从而可以尽可能高效地交付所需数据。