爲Rails應用程序開發「擴展」系統最好的方法是什麼?Ruby on Rails應用程序的擴展/插件/模塊系統?
我的意思是WordPress擁有同樣的系統,比如向掛鉤註冊函數等。然後插件可以從管理面板激活/取消激活。
有沒有關於在RoR軟件中實現這種功能的一些書籍/在線資料?
爲Rails應用程序開發「擴展」系統最好的方法是什麼?Ruby on Rails應用程序的擴展/插件/模塊系統?
我的意思是WordPress擁有同樣的系統,比如向掛鉤註冊函數等。然後插件可以從管理面板激活/取消激活。
有沒有關於在RoR軟件中實現這種功能的一些書籍/在線資料?
錯字這是否使用正規Rails插件
文件夾包含插件的src:
http://github.com/fdv/typo/tree/812c0fab156c09b7bf00040b047bb59bf586f806/vendor/plugins
插件的列表:
http://wiki.github.com/fdv/typo/typo-plugins-list
管理界面可供選擇側邊欄插件:
我想看看實現的一些想法。
Ben Hughes提到了一些實現,這些實現都是很好的例子,並且會成爲很好的啓動點。如果你想滾從頭開始自己的解決方案,我建議類似如下:
創建兩個表/模型,控件和UserWidgets:
Widgets:
ID (Primary Key)
Name
Description
UserWidgets:
ID (Primary Key)
User_ID (Foreign Key -> Users.ID)
Widget_ID (Foreign Key -> Widget.ID)
現在你有一個表,用戶關聯小部件。我假設你的部件將主要通過JavaScript處理,所以添加一個新的子目錄,像這樣......
/public/javascripts/widgets
現在,在您的窗口小部件表中的每個部件,相應的JS文件添加到該子目錄。如果您有名爲「Clock」的小部件,請添加「Clock.js」。
將適當的關聯添加到用戶模型。
has_many :user_widgets, :dependent => :destroy
has_many :widgets, :through -> :user_widgets
然後在某處的視圖,你可以這樣做:
<% @user.widgets.each do |w| %>
<%= javascript_include_tag "widgets/#{w}" -%>
<% end %>
這將有可能被放入佈局的任何網頁的窗口小部件會出現在。如果您不想通過JavaScript使用動態小部件,則可以在視圖/部分中的任意位置使用非常相似的視圖代碼。
以下建議適用於Ruby應用程序,但可以根據您的目的進行調整:Plugins in your Ruby Application