2013-10-16 41 views
1

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

Rails源代码是太大,没有地图导航。

研究日志: - 在Rails中,假设Ratility是探索插件架构如何实现的好地方。
- 在Ruby 1.8中,有一个名为mixology的C扩展,它提供了mix \ unmix结构。 - 在Ruby 1.9 *,据认为,alias_method_chain 使用Rails的 - 在Ruby 2.0前置关键字,就是要解决这样的问题有用的(我假设!)

回答

1

一个最好的介绍到的话题我已经看到了到目前为止,在何处瑞安提取一些他一块的应用程序成宝石一个Railscast:

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

通常有一些规则可循,使你的代码容易提取:

  • 防爆道常见的逻辑模块,甚至更好的区分服务对象
  • SOLID原则会让你的单位精简和孤立尽可能
  • ALWAYS命名空间你的顾虑,服务对象,图书馆等
  • 测试这些单位完全隔离,不要依赖像数据库的细节
  • (争议)做依赖注入,你不会后悔这个测试时,只是在你的对象之间设计API时
  • 尽可能避免使用Rails助手如果你打算你的代码在Rails上下文外部可重用

我希望这些建议会把你放在你自己的Rails :)