我正在研究一個有兩個不同Rails應用程序的項目。一個是Web應用程序,另一個是API應用程序。他們都使用相同的數據庫。如何或者什麼是他們使用相同模型和模式的正確方式?目前,看起來好像模型文件是從一個應用程序複製到另一個應用程序,並且在檢查差異時它們似乎嚴重不同步。如何讓兩個Ruby應用程序使用相同的模型?
回答
有幾個選項浮現在腦海中:
Git的子模塊。將模型存儲在單獨的回購(或回購)中,然後將其作爲Git submodule包含在每個應用中。這使您可以在不重複冗餘的情況下重用它們,儘管您可能必須確保每個應用程序使用同步的版本。
使它成爲一個應用程序,有兩個不同的部分。也許你的API可能是一個簡單的Sinatra(或其他微框架)應用程序,並駐留在Rails應用程序中,然後掛載到路徑/子域。這可能是最簡單的工作量,但也可能是最混亂的。
使用您自己的API。你已經有一個API,爲什麼不使用它?您的前端應用程序可以與之交談,並且不必在其中包含任何模型邏輯。這也有確保你的API工作並且功能全面的好的副作用,因爲你現在是它的消費者而不僅僅是第三方。
你挑哪一個取決於你,雖然我碰巧喜歡最後一個。儘管可能會有更多的工作,但通過將業務邏輯放在外部(並且使MVC衝突更難(如果不是不可能的話)),您最終可能會獲得整體更好的設計。
如果我使用第三個選項,Web應用程序將如何顯示模型?視圖不需要訪問模型嗎? Web應用程序是Rails,我不認爲API應用程序是Rails。 – Chloe 2013-02-11 02:52:28
@Chloe你會通過API獲得你需要的所有信息。視圖不應直接訪問模型,它只應從控制器獲取信息,控制器從API獲取其數據。不要緊,如果他們不是兩個Rails(使用API的另一個美麗:他們可以完全不同地實現)。 – 2013-02-11 03:10:31
- 1. 如何讓兩個模型具有相同的「類型」?
- 2. iPhone - 兩個相同的應用程序
- 3. 你如何讓兩個Android應用程序共享相同的用戶ID?
- 4. 在同一個應用程序的兩個不同數據庫中使用相同的Django模型
- 5. 如何在視圖中使用兩個相同的模型? [MVC4]
- 6. 的Ruby on Rails應用程序使用多個模型
- 7. 兩個獨立的Django應用程序需要相同的模型
- 8. 如何讓多個WAR應用程序使用相同的二級緩存?
- 9. 如何讓幾個應用程序使用相同的認證系統?
- 10. 使用相同的密鑰簽署兩個應用程序
- 11. 兩個iPhone應用程序如何共享相同的設置?
- 12. 如何讓兩個項目引用相同的第三方程序集,並且它們的類型相同?
- 13. 兩個應用程序加載相同的.NET程序集:相同的實例?
- 14. 如何更新平均應用程序中的兩個模型
- 15. 如何在兩個不同的模型中使用相同的驗證器
- 16. 如何讓應用程序保持相同的狀態?
- 17. 如何從另一個引用相同的模型兩次?
- 18. iTunes思考兩個不同的應用程序是相同的
- 19. 使用相同的ravenhq數據庫與兩個不同的應用程序
- 20. httpnotificationchannel與模擬器中兩個不同應用程序的ChannelUri相同
- 21. 使用相同的_Id在骨幹和mongodb的兩個模型
- 22. 兩個線程可以使用相同的線程程序嗎?
- 23. 如何在Rails中兩次加入相同的兩個模型?
- 24. 如何使用Servlet從相同的應用程序調用EJB
- 25. 兩個belongs_to相同的模型使用名稱分配ID
- 26. 如何讓Symfony中的兩個應用程序共享組件?
- 27. 如何使用Ruby on Rails爲兩個模型提供兩個不同的模板設計庫
- 28. 如何讓這兩個進程(程序)直接使用管道相互對話?
- 29. 用於同步兩個應用程序的設計模式
- 30. 在Django應用程序模型,如何讓網址前綴
嗨。你在系統中使用git或其他代碼版本嗎? – 2013-02-11 01:15:08
Git。 Git的。 Git的。 Git的。愚蠢的最低字符要求。 – Chloe 2013-02-11 01:21:18
他們*需要*是兩個應用程序嗎?或者應用程序的兩個方面? – micapam 2013-02-11 01:32:15