【问题标题】:Rails - How to avoid duplication between different applicationsRails - 如何避免不同应用程序之间的重复
【发布时间】:2015-07-29 19:45:58
【问题描述】:

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

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

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

  • 样式
  • 布局
  • 消息(通知、警报等)

我应该怎么做才能避免这种应用间重复?编写一个封装这些文件的 gem 是不是最好的选择?

【问题讨论】:

    标签: ruby-on-rails ruby architecture code-duplication


    【解决方案1】:

    这很简单,制作你自己的宝石。您可以将其关闭(使用git: 'git location')或将其打开并使用 ruby​​gems。

    你可以从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 应用程序实际上是一个好主意。

    【讨论】:

    • 不会减慢调试速度吗?我的意思是,通过查找问题、切换到 gem 项目、在内部搜索、更改、在每次更改后测试其他 2 个应用程序?
    • 首先,您肯定希望在您的 gem 中进行测试。但它不会减慢调试速度:gem 引发的错误显示为gemname/file_in_gem:line_number,因此您仍然可以轻松发现问题。此外,如果您遵循测试实践,则不应在其他两个应用程序中测试您的 gem,这已经在 gem 本身中进行了测试。关于切换项目,我的编辑器支持ctrl+alt+p快速切换,所以从不觉得“被打断”
    • 我明白了。你能用那些关于测试的 cmets 更新你的答案吗?顺便说一句,您提供的链接很好。
    • 完成,还添加了一篇关于一家公司将其发挥到极致的好文章,将整个应用程序拆分为子引擎:tech.taskrabbit.com/blog/2014/02/11/rails-4-engines(非常有趣的文章)
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 1970-01-01
      • 1970-01-01
      • 2017-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多