2013-02-11 56 views
2

我正在研究一個有兩個不同Rails應用程序的項目。一個是Web應用程序,另一個是API應用程序。他們都使用相同的數據庫。如何或者什麼是他們使用相同模型和模式的正確方式?目前,看起來好像模型文件是從一個應用程序複製到另一個應用程序,並且在檢查差異時它們似乎嚴重不同步。如何讓兩個Ruby應用程序使用相同的模型?

+0

嗨。你在系統中使用git或其他代碼版本嗎? – 2013-02-11 01:15:08

+3

Git。 Git的。 Git的。 Git的。愚蠢的最低字符要求。 – Chloe 2013-02-11 01:21:18

+0

他們*需要*是兩個應用程序嗎?或者應用程序的兩個方面? – micapam 2013-02-11 01:32:15

回答

3

有幾個選項浮現在腦海中:

  • Git的子模塊。將模型存儲在單獨的回購(或回購)中,然後將其作爲Git submodule包含在每個應用中。這使您可以在不重複冗餘的情況下重用它們,儘管您可能必須確保每個應用程序使用同步的版本。

  • 使它成爲一個應用程序,有兩個不同的部分。也許你的API可能是一個簡單的Sinatra(或其他微框架)應用程序,並駐留在Rails應用程序中,然後掛載到路徑/子域。這可能是最簡單的工作量,但也可能是最混亂的。

  • 使用您自己的API。你已經有一個API,爲什麼不使用它?您的前端應用程序可以與之交談,並且不必在其中包含任何模型邏輯。這也有確保你的API工作並且功能全面的好的副作用,因爲你現在是它的消費者而不僅僅是第三方。

你挑哪一個取決於你,雖然我碰巧喜歡最後一個。儘管可能會有更多的工作,但通過將業務邏輯放在外部(並且使MVC衝突更難(如果不是不可能的話)),您最終可能會獲得整體更好的設計。

+0

如果我使用第三個選項,Web應用程序將如何顯示模型?視圖不需要訪問模型嗎? Web應用程序是Rails,我不認爲API應用程序是Rails。 – Chloe 2013-02-11 02:52:28

+0

@Chloe你會通過API獲得你需要的所有信息。視圖不應直接訪問模型,它只應從控制器獲取信息,控制器從API獲取其數據。不要緊,如果他們不是兩個Rails(使用API​​的另一個美麗:他們可以完全不同地實現)。 – 2013-02-11 03:10:31

相關問題