1

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

Rails 源代码太大而无法在没有地图的情况下导航。

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

4

1 回答 1

1

到目前为止,我看到的对主题的最佳介绍之一是 Railscast,其中 Ryan 将他的一些应用程序提取到一个 gem 中:

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

通常,要使您的代码易于提取,需要遵循一些规则:

  • 将通用逻辑提取到模块中,甚至更好地分离服务对象
  • 遵循SOLID原则将使您的单位尽可能精简和孤立
  • ALWAYS 命名空间 您的关注点、服务对象、库等
  • 完全隔离测试这些单元,不要依赖数据库等细节
  • (有争议)做依赖注入,你不会在测试时后悔,只是在你的对象之间设计 API 时
  • 如果您希望您的代码在 Rails 上下文之外可重用,请尽可能避免使用 Rails 助手

我希望这些建议能让你掌握自己的 Rails :)

于 2013-10-16T19:43:58.757 回答