Ruby 2.0中的Gemified插件架构\设计模式

时间:2013-10-16 19:30:09

标签: ruby-on-rails ruby design-patterns plugins

在类似框架的ruby项目中,如何将插件打包为gem,然后在项目中使用\ unuse它们,最流行的生活示例是Rails,但我寻求抽象概念\实践\设计模式可以帮助建立这样的项目架构。

如果没有地图,Rails源代码很难导航。

研究日志: - 在Rails中,Railities被认为是开始探索如何实现插件架构的好地方 - 在Ruby 1.8中,有一个名为mixology的C扩展,它提供了mix \ unmix结构。 - 在Ruby 1.9。*中,相信Rails使用了alias_method_chain - 在Ruby 2.0中,prepend关键字在解决此类问题时非常有用(我假设!)

1 个答案:

答案 0 :(得分:1)

到目前为止,我见过的最佳主题之一是Railscast,其中Ryan将他的应用程序的一部分提取到一个宝石中:

http://railscasts.com/episodes/301-extracting-a-ruby-gem

通常,要使代码易于提取,遵循的规则很少:

  • 为模块提取通用逻辑,甚至更好地分离服务对象
  • 遵循SOLID原则将使您的单位尽可能精益和孤立
  • 始终命名空间您的问题,服务对象,库等
  • 测试那些完全隔离的单位,不要依赖数据库等细节
  • (有争议)进行依赖注入,在测试时以及在对象之间设计API时不会后悔。
  • 如果您打算在Rails上下文之外重用代码,请尽可能避免使用Rails帮助程序

我希望这些建议会让你自己成为Rails:)