2014-10-06 66 views
1

我在Rails 4.0中編寫API。這個系統應該公開其商業邏輯(模型)是用Rails 2.3.8編寫的資源。 GET請求的設計很簡單,因爲我們可以連接到數據庫並輕鬆公開資源。但是,要執行Create,Update,Delete操作,API系統需要調用Rails 2.3.8中另一個應用程序中編寫的模型。模型的完整重寫超出了範圍。在rails 2.3.8 for rails 4.0 api中使用模型

如何在Rails 4.0中使用Rails 2.3.8編寫的模型?是否有可能在兩個不同的rails/ruby​​版本之間共享模型?另外,還有哪些模式/設計方案可以解決這個問題?

我想出了以下解決方案 -

  1. 使用Druby和創造的Rails 4.調用方法的Rails 2.3.8模型對象,保存等,幷包裹他們得到例外。我看到的問題是,這可能無法擴展,因爲可能存在多個rails實例2.3.8應用程序運行在不同的盒子上,那麼我們是否需要在每個盒子上啓動druby服務?如果這些實例坐在負載均衡器後面怎麼辦?

  2. 使用ZeroMQ連接Rails 4和Rails 2.3.8應用程序。我們可以使用request-reply模式來實現同步。 ZeroMQ將連接到負載均衡器,發送請求到Rails 2.3.8應用程序,並將響應發送回Rails 4.0應用程序。觀察者可能會坐在Rails 2.3.8應用程序中觀察ZeroMQ上的任何傳入請求,並創建對象或捕獲異常並返回響應。任何使用觀察員模式以外的建議?

有沒有解決方法?哪個解決方案更好?有沒有辦法分享用不同版本爲模型編寫的ruby代碼?

回答

0

如果HTTP請求的CRUD操作,是您可行的(即高性能不夠)應用程序,我知道這是一個很大如果 - 它應該是很容易使用Active Resource(在Rails 4應用程序)來發出請求對你的Rails 2.3應用程序。由於Active Resource的設計考慮了Rails的REST實現,因此您不需要比Rails 2.3應用程序中的腳手架控制器操作更多。

+0

這並不能解決問題,原因有兩個 - 1.有一個客戶端在等待HTTP請求的一端。 – 2014-10-06 22:17:20