簡體   English   中英

創建Rails寶石

[英]Creating Rails Gems

我想以模塊化方式構建我的應用程序:例如,我可能有:

Users->has_and_belongs_to_many->Projects
Users->has_and_belongs_to_many->Tasks
Projects->has_many->Tasks
Tasks->belongs_to->Project (1 task belongs to 1 project.)

注意 :項目和任務可以包含許多用戶。

我想要構建這個的方式是:

  • 用戶=寶石
  • 項目=寶石
  • 任務=寶石

每個都可以返回json(for ember)或html。 兩者都沒有相互依賴,這個想法是每個都只是一個細節。 Rails,ember和html都只是細節。

我怎么能這樣做,並在一天結束時像拼圖一樣把它們連在一起? 或者這甚至可行嗎?

現在,我已經完成了這個概念的用戶部分。 它包含模型,測試,控制器和視圖。 我可以將其捆綁為寶石,還是僅將控制器和模型捆綁在一起? 這個“用戶”寶石將使用friendlyId gem來使網址看起來不錯,實際上所有“寶石”(項目,任務和用戶)都將依賴於這個寶石。

你有什么建議去做我想要的模塊化? 這是好習慣嗎? 不好的做法?

我相信使用Rails引擎可行的方法。

每個引擎本身都可以是一個應用程序。

例如, Devise - 在你的應用程序中添加了許多身份驗證功能的gem是一個Rails引擎。 它提供了您自己的控制器,幫助器,郵件程序和視圖,您可以從您的應用程序中使用它們。

我個人正在使用Engines來插入i18n網絡后端(允許輸入和保存翻譯到Redis的管理頁面)到許多應用程序中,並將用戶的錯誤報告和問答功能插入到幾個現有項目中。

每個引擎都作為寶石包含在項目中,它可以包含普通應用程序所做的任何事情 - 控制器,視圖,模型,資產,其他寶石......

我個人沒有聽說過這種方法有任何成功的故事(但我不知道是否有人試過),所以如果你有一個堅實的概念,也許它會對你有用。

Pivotal Labs做了一個演講(Euruko 2013在雅典),他們展示了類似於你所描述的軌道引擎方法。 這是演示文稿http://www.ustream.tv/recorded/35107339/highlight/377037

雖然我沒有在實踐中看到它,但我想。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM