【问题标题】:Gemified Plugins Architecture\Design Patterns in Ruby 2.0Ruby 2.0 中的 Gemified 插件架构\设计模式
【发布时间】:2013-10-16 19:30:09
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

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

    通常有一些规则可以让您的代码易于提取:

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

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

    【讨论】:

      猜你喜欢
      • 2023-03-29
      • 1970-01-01
      • 2011-10-15
      • 2010-09-17
      • 1970-01-01
      • 1970-01-01
      • 2019-02-20
      • 2012-06-10
      • 1970-01-01
      相关资源
      最近更新 更多