2010-04-08 30 views
4

單個Ruby on Rails安裝是否可以有多個應用程序共享一個通用模型?Ruby on Rails上的多個應用程序

例如,我想要有一個前端應用程序以及後端管理控制檯,但都共享相同的模型。

這與Symfony在PHP中的工作方式類似。

提前致謝!

+0

如果我理解正確,後端控制檯不應該從Web上可見?它應該是一個應用程序或從命令行運行的一些ruby腳本?或者你只是指一個管理面板? – 2010-04-08 12:56:16

回答

10

擁有管理面板的最簡單方法是使用命名空間。你只需將所有管理員的東西都放到管理員名稱空間中這是非常普遍的做法。另一方面,如果你想讓兩個(或更多)應用程序共享同一個數據庫和模型,那麼這很容易。我有一個項目有兩個共享相同數據庫的RoR應用程序。所以這裏是我的想法:

  1. 我把所有的遷移到我的第一個項目。如果您將所有這些應用程序(或幾乎沒有的應用程序)放在這兩個應用程序中,可能會很麻煩。然後,在遷移之後,您可以將schema.db複製到第二個項目,或者只是一個符號鏈接(在類Unix系統中),不再關心它。
  2. 如果您想在兩個應用程序中共享某個模型,則可以複製模型文件或使用符號鏈接。我使用了第一種方法,因爲我不想複製在第二個應用程序中不使用的所有相關模型。
  3. 它很好用。但在這種情況下,您還必須爲兩個應用程序設置服務器。我爲這兩個應用程序使用了不同的子域。

希望它有幫助!

+0

我會閱讀命名空間,這聽起來是我正在尋找。請原諒我的術語。 :) – 2010-04-08 13:15:54

+0

'那麼你可以複製模型文件'你的意思只是應付model.rb文件?如果是這樣,它沒有幫助。 – Pavel 2012-06-22 23:28:51

2

klew的建議爲我工作。我有一個全功能的管理後端,需要一個精益和專注的API應用程序。

我結束了對第二個應用程序使用rails_api gem並創建它在一個單獨的用戶帳戶下。

我使用postgres作爲我的數據庫。

然後我不得不做以下幾點: 編輯database.yml,以使用同一個數據庫,用戶名,密碼與其他應用程序 而不是複製我使用LN文件-s 我聯繫schema.rb和任何模型。 rb文件,我想在API中使用。 在這一點上,我能夠在API應用程序中使用rails控制檯。

由於我使用的是rails_api gem,我顯然缺少路由。這可能是一件好事,因爲我可以根據需要手動創建特定的路由,而不會向網絡暴露任何其他內容。

我不在API應用程序中進行任何遷移,除了model.rb文件的奇怪鏈接之外,其他所有內容都在我的原始應用程序中完成。

似乎很好地工作,謝謝Klew!