Rails - 如何避免不同应用程序之间的重复

Rails - How to avoid duplication between different applications

这似乎是一个相当宽泛的问题,但我四处搜索并没有找到避免不同应用程序之间重复的方法。仅在应用内。

一段时间以来,我一直在使用三个不同的 rails 应用程序。有时我发现自己重构了一些文件,比如我的 icons_helper.rb。当我完成的时候。它比以前更好,但与我另外两个 rails 应用程序中的同一个文件不同。

其他重复代码的典型例子:

我应该怎么做才能避免这种应用程序间的重复?编写包装这些文件的 gem 是最佳选择吗?

如果您想在多个应用程序中重用代码,那么我建议将该代码提取到 Gem 中,并要求在每个应用程序中 Gem。

很简单,自己做 gem。您可以将其关闭(使用 git: 'git location')或将其打开并使用 rubygems.

你可以从 bundle gem yourgem 开始,这是 how to build your first gem

上的一篇非常好的文章

您将其作为一个完全独立的项目进行管理。我们公司正在这样做,效果很好

更新 1

正如建议的那样,您肯定希望在 gem 中进行测试。它不会减慢调试速度:gem 引发的错误显示为 gemname/file_in_gem:line_number,因此您仍然可以轻松检测到问题。此外,如果您遵循良好的测试实践,则不应在其他应用程序中测试您的 gem:gem 已经在其自己的代码库中进行了测试。

您可能想查看这篇关于 splitting a rails application 很多子引擎的文章。显然这是一种极端的方法,只能在非常大的项目和更大的团队中提供良好的结果,但它向您表明拆分 Rails 应用程序实际上是一个好主意。