2011-12-06 116 views
2

我有一個現有的Web應用程序運行在Rails上。該計劃是設置一個新的服務器,它將提供一個API服務,並最終將webapp更新爲該API的客戶端。包裝導軌2.3型號

這似乎是一個很好的方法來實現這一目標將所有模型打包爲寶石並在兩個應用程序之間共享它們。最終,API服務將是單一的 - 包含所有模型,但有一段時間的開發/遷移需要共享模型。
API和webapp都將使用相同的數據庫。

  • 跳到包裝我所有的 模型之前,我需要考慮什麼?
  • 將所有模型打包成單個寶石,單獨打包每個模型還是執行某種邏輯分組模型是否值得?
  • 我會如何處理 寶石的依賴關係?

僅供參考,這裏有一個類似的上下的問題: Sharing models between Rails apps using gems

我也剛開始熟悉包裝Ruby代碼爲Rubygem。 (這可能解釋了我上面的一些問題。)

我使用的是Rails 2.3.14,而不是Rails 3.X.

+2

如果新服務器上的應用程序提供了一個真正的API,那麼您甚至不必在使用此API的所有應用程序之間共享模型,對吧?但是如果你想分享這些模型,那麼如果你使用的是rails 3.1,這似乎很容易。例如,您可以創建一個包含所有模型和相關庫的引擎。 – Robin

+0

正如我剛纔提到的那樣,最終的目標將是模型被包含在API引擎中。 :) – GrooveStomp

回答

1

過去我們已經完成了將模型包裝到寶石中。我們開始時移動了一組相互關聯的模型,但沒有其他模型的其他依賴關係。然後我們慢慢地移動另一個組。這有點痛苦,但我們最終做到了。模型寶石在幾個應用程序之間共享。

+0

感謝DrChanimal。我現在正在試驗這個過程。你如何管理依賴關係?我們的environment.rb指定了大部分依賴關係,但顯然這些不存在於分離的模型gem中。 – GrooveStomp

+0

如果您使用的是rails 3或更高版本,則可以在Gemfile中指定相關的gem,然後使用bundler來管理安裝gem,前提是您將gem放入某個gem服務器。 – DrChanimal