创造宝石的标准

时间:2015-04-11 21:47:10

标签: ruby-on-rails ruby architecture

是否有创建gem的良好标准,而不是在lib文件夹中创建另一个类?

我使用过几个Rails项目,代码库往往是单片的。我想开始模块化,但我不能说服团队和我自己从哪一点开始创建独立的库。

例如,为三线班级创建一个宝石听起来过度工程化。另一方面,它似乎是合理的,因为至少在测试时会有6行,并且代码可能会进一步增长。另外,不属于MVC的代码片段不应该在应用程序中严格的工艺,但我还不确定。

您是否可以分享您的铁路项目经验,其他来源,如书籍或博客文章,或其他语言项目的课程?

2 个答案:

答案 0 :(得分:5)

我出于不同的原因用来提取宝石:

  • 代码解决了一个常见问题,可能对其他人有帮助(开源)
  • 您希望在不同的应用中重复使用代码,即使这些应用目前不存在(例如api与内部服务的集成)
  • 是在我的代码库完全不同的区域重用的代码(这表明它独立于我的应用程序)
  • 如果不只有一个类,而是多个相互依赖的文件

IMO不是关于代码行。如果它解决了一个常见的问题并且可能会帮助其他问题,那么提取一个内联可能是有意义的(想想active_support中的代码扩展,其中大多数都不是非常复杂)。而另一方面,当它只解决域中非常特殊的问题时,提取一个包含100多行的类可能没有意义。

如果我想拆分一个单一的应用程序,我不会查看lib文件夹。我会看看应用程序本身,并尝试将更大的部分提取到更小的服务中。

答案 1 :(得分:1)

为3行类创建gem是过度工程化的。它会产生比它的价值更多的开销。同样关注引擎,但过早的模块化和/或优化可能会比简洁的单片应用程序IMO造成更大的混乱。