在rails 2.3.8中使用rails 4.0 api中的模型

时间:2014-10-06 21:29:01

标签: ruby-on-rails

我在Rails 4.0中编写API。该系统应该公开其业务逻辑(模型)是用Rails 2.3.8编写的资源。 GET请求设计简单,因为我们可以轻松连接到数据库并公开资源。

但是,要执行创建,更新,删除操作,API系统需要调用Rails 2.3.8中另一个应用程序中编写的模型。完全重写模型超出了范围。

如何在Rails 4.0中使用Rails 2.3.8中编写的模型?是否可以在两个不同的rails / ruby​​版本之间共享模型?此外,还有哪些模式/设计解决方案可以解决这个问题?

我提出了以下解决方案 -

  1. 使用Druby并在Rails中创建Rails 2.3.8模型的对象4.调用保存等的方法并将它们包装起来以获取异常。我看到的问题是,这可能无法扩展,因为可能有多个rails 2.3.8应用程序在不同的盒子上运行的实例,那么我们是否需要在每个盒子上启动druby服务?如果这些实例位于负载均衡器后面怎么办?

  2. 使用ZeroMQ连接Rails 4和Rails 2.3.8应用程序。我们可以使用请求 - 回复模式来实现同步。 ZeroMQ将连接到负载均衡器,向Rails 2.3.8应用程序发送请求并将响应发送回Rails 4.0应用程序。观察者可以坐在Rails 2.3.8 app中观察ZeroMQ上的任何传入请求,创建对象,捕获异常并返回响应。是否有使用观察者模式以外的建议?

  3. 有什么解决方案吗?哪种解决方案更好?有没有办法分享用不同版本的模型编写的ruby代码?

1 个答案:

答案 0 :(得分:0)

如果为您的应用程序提出CRUD操作的HTTP请求是可行的(即足够高效),而且我知道如果 -it应该非常容易使用,那么 {{3} (在您的Rails 4应用程序中)对您的Rails 2.3应用程序发出请求。由于Active Resource是使用Rails设计的。在实现REST实现时,您不应该比Rails 2.3应用程序中的脚手架控制器操作更多。