2014-02-22 30 views
2

我看到他們的app文件夾,但我看不出這個文件夾是如何提供給Rails的。設計gem如何使其應用程序文件夾可用於Rails?

我的嘗試是搜索railtieviews_path,因爲我有興趣編寫一個共享視圖和幫助程序文件的gem。我怎樣才能做到這一點?

我可以在哪裏找到關於這方面的文檔?我應該google什麼關鍵字:railtie,引擎?

回答

6

寶石樣設計使用Rails中提供一個功能叫做Engines.

發動機基本上允許你建立你自己的功能塊和無縫地將它們插入到另一個應用程序,有效地使可用的發動機的意見,模型和控制器就好像它們是它的一部分。

Rails的發動機不僅是一個很好的方式,以提供寶石的功能,但如果你想踏踏實實地基本事實,一個Rails引擎,也可以很好的保持自己的應用程序整齊的grouping together various pieces of functionality.

只是一種特殊的Rack app.因此,它可以是mounted by the Rails router。簡而言之,Rails路由器會檢測對這些應用程序「安裝」在路徑上的請求,並將它們路由到由引擎提供的控制器,而不是您的常規控制器。


請確保不要將此概念與Omniauth使用的其他寶石混淆。

這種寶石代替提供Rack Middleware,這並不一定需要被集成到通過Rails路由器的應用程序。

您需要了解更多有關Rack的信息,以瞭解它的工作原理,但實際上,每次嚮應用程序發出的請求都會在實際擊中Rails路由器之前通過中間件如Omniauth。所述中間件可以自己響應請求(基本上使其停止並且永遠不會到達路由器和應用程序的其餘部分),或者「擴充」請求(例如,Omniauth檢查並執行認證,然後將數據存儲在請求中env)將請求傳遞給下一個中間件。

相關問題