6

我必須在Ruby on Rails上構建一個社交網站。網站中的功能可能會不時變化;所以我們需要輕鬆添加/刪除功能。而且,我們可能正在建設另一個社交網站。由於這些原因,我們正在考慮爲RoR中的社交網站構建一個基本框架,並具有安裝或卸載框架擴展的功能。如何在Ruby on Rails中使用插件架構?

我以前在Joomla工作過! CMS和其添加/刪除擴展的體系結構是我所看到的。在Joomla!安裝通常有一個管理端,您可以從中添加/刪除/自定義擴展。

我是RoR的新手,發現很難決定如何做到這一點。任何幫助將不勝感激。

+0

Rails是一個有點水平低於的Joomla ...您可能需要自己構建一些基礎架構,或者使用現有的Rails應用程序。 –

+0

@Toby - 可能正在更新,因爲您評論。我同意你的看法,Rails絕對是低級的 @Shree - 看看可以做什麼的一些例子,特別是注意Redmine和ADVA CMS – Spasm

回答

15

UPDATE 2015年:這是回答了在2009年發生了很多變化

插件已經被取代的寶石和發動機 有關的所有信息,你需要在發動機: http://guides.rubyonrails.org/engines.html

引擎是爲您的rails應用程序構建封裝和可重用代碼的絕妙方式。

爲參考

在開發方面Rails的發動機和/或插件原來的答案可能是你在找什麼。

Rails Engines are small subsets of an application that can be dropped into any of your Rails applications and handle common parts of the application from scratch.

說,例如,你的社交網絡應用程序有一個維基,博客,聊天室等,你會更有可能希望創建一個wiki引擎,博客引擎和聊天室的發動機。

引擎允許您在不同的應用程序中重新使用此類功能,因此您不必重複自己。

在看看:http://rails-engines.org/

Some support for ‘engine’ plugins has been merged into the Rails core codebase in Rails 2.3.

我也建議考慮看看一些公共項目,說在GitHub上,看看人們是如何使用的發動機。

在某些發動機請看:

其他有用的鏈接閱讀

在功能方面你仍然可以有可能激活某些功能,即一個管理區。您的博客或wiki允許用戶訪問具有權限/角色系統的區域。

如果你想建立一個CMS支持某種擴展的像WordPress的或Joomla,那麼你將要完成構建並提供guidlines或者至少從用戶角度考慮如何上傳/安裝引擎/插件。

對這個

Redmine的安全問題不知道已經把這種功能集成到他們的應用真棒。您可能希望將source code周圍挖的提示和線索

最後Adva_CMS基本上沿用這一做法,並創造了a number of Engines他們CMS應用

HTH

4

引擎仍然是一個非常堅實的方式走了,新的位置,以獲取信息上的位置爲:http://guides.rubyonrails.org/engines.html

但你需要的是真正的多個特定用途。許多應用程序隨着時間的推移有機地開發這些東西。他們從手工製作其中的一些開始,然後定期對它們進行重新分類,直到找到符合軟件設計模式的模式,然後開發插件框架。

你會暴露你的界面,最終用戶?對於第三方開發者?這些插件控制應用程序的哪些部分?它只是表示層?它會影響數據模型嗎?考慮一下這樣一個事實,即當你發佈任何類型的外部接口時,你正在開發你需要遵守的契約。

你可以看看這些設計模式:http://en.wikipedia.org/wiki/Software_design_pattern。他們將幫助您瞭解如何管理您的開發過程。如果你只是在內部使用插件,那麼他們的真正目的是什麼?是什麼讓他們不同於模塊?