创造宝石的标准

tar*_*aro 4 ruby architecture ruby-on-rails

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

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

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

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

spi*_*ann 5

我用它来提取宝石有不同的原因:

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

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

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