我有兩個Rails應用程序(使用rails 3.0.7),稱它們爲「blog」和「auth」。我想從「博客」中掛載「auth」,這樣我就可以運行「博客」應用程序,並將某些請求路由到「auth」應用程序。如何將現有的Rails應用程序嵌入/裝載到另一個Rails應用程序中?
看來我需要嵌入或可能創建一個「引擎」,但我不是100%確定哪個是正確的。
如何在「博客」應用程序中嵌入「auth」應用程序?
我有兩個Rails應用程序(使用rails 3.0.7),稱它們爲「blog」和「auth」。我想從「博客」中掛載「auth」,這樣我就可以運行「博客」應用程序,並將某些請求路由到「auth」應用程序。如何將現有的Rails應用程序嵌入/裝載到另一個Rails應用程序中?
看來我需要嵌入或可能創建一個「引擎」,但我不是100%確定哪個是正確的。
如何在「博客」應用程序中嵌入「auth」應用程序?
如果auth應用程序類似於web服務(例如Facebook身份驗證),那麼只需保持2個應用程序運行並通過一個應用程序使用urls向另一個應用程序發出請求。
如果這些應用程序共享一些邏輯或相同的數據庫,您可以合併代碼,以便兩個應用程序成爲一個,或者您可以使'auth'應用程序像gem或插件一樣並在您的博客中使用'app。
Rails3是一個基於機架的應用程序。 Rackmiddleware已經有一些默認的內置應用程序。嘗試運行捆綁執行耙中間件。您可以將自定義Rack應用程序添加到堆棧中。使用this博客帖子查看它是如何工作的。
我已經看過那篇文章,但我仍然想知道,如何讓我的「博客」應用程序需要「auth」應用程序?這不像「auth」rails應用程序是一個寶石,我可以在我的「博客」應用程序中添加到Gemfile中。 – codecraig
我不明白,您是否需要將驗證添加到您的應用程序中? – Anatoly
我有一個名爲'auth'的rails應用程序,提供身份驗證。我希望我的「博客」rails應用程序的客戶端代碼能夠通過「auth」應用程序進行GET/POST等。我無法直接從JSONP的'博客'客戶端b/c中的JavaScript代碼(只有GET的工作)做到這一點。我想從「博客」應用程序中安裝「auth」應用程序,以便我可以訪問auth。來自客戶端代碼的東西。那有意義嗎? 現在我認爲我的主要問題是,如何獲得由「博客」應用程序裝載的「auth」應用程序?我不能像這樣的博客文章建議b/c掛載auth應用程序不在博客應用程序的加載路徑。 – codecraig
如果您試圖在一個Ruby實例中定義兩個Rails應用程序,但它在this提交後發生了更改,Rails正在提高RuntimeError: You cannot have more than one Rails::Application
。
這在4.0.0中仍未發佈,但會包含在較新的版本中。 (>4.1.0.β)
檢查出the discussion on PR欲知更多信息。
從我的理解,你可能不需要有兩個Rails應用程序,但。您應該嘗試從Rails::Engine
中提取所需的功能。
您可以爲'auth'應用程序創建「rails-engine」,然後將此引擎掛載到rails應用程序中,即'blog'應用程序。
瞭解更多關於的Rails ::引擎在下面的鏈接 -
http://guides.rubyonrails.org/engines.html
http://api.rubyonrails.org/classes/Rails/Engine.html
要嵌入滑軌安裝發動機到Rails應用程序,請執行以下常規步驟 -
1 )打開需要嵌入引擎的目標Rails項目。
2)打開用於編輯的Gemfile,並添加以下行:
gem '<engine name>', :path => "<absolute path to the Rails mountable engine project>"
3)打開用於編輯配置/路由。rb,並添加以下行:
mount <engine name>::Engine, :at => "/<engine name>"
創建引擎是繼續進行的方式。 – apneadiving