【问题标题】:Sharing models between Rails apps using gems使用 gem 在 Rails 应用程序之间共享模型
【发布时间】:2011-02-23 23:58:50
【问题描述】:

所以我想在两个 Rails 应用程序之间共享模型并且不喜欢子模块解决方案(过去让我很生气)。我正在考虑使用 gems 来解决这个问题并让它基本上正常工作:

  1. 使用珠宝商 (my_models) 创建宝石
  2. 使用 Gemfile 中的内容创建一个 rails 应用程序,例如: gem 'my_models', :path => '../my_models' 这样您就可以避免不断地包装宝石等。
  3. 使用 shotgun 不断地重新加载所有类(否则,如果不每次都重新启动服务器/控制台,您将无法真正编辑 my_models 文件。

所以有几个问题:

  1. Shotgun 很慢,是否有更好的方法在 Rails 中每次只重新加载一个宝石?
  2. 如果我的 my_models ActiveRecord 模型有依赖项,我将它们放在 my_models gems 中,这会导致我的常规应用程序出现依赖项噩梦吗?
  3. 为什么这可能是个坏主意,我还遗漏了什么?

【问题讨论】:

    标签: ruby-on-rails gem


    【解决方案1】:

    如果您使用支持子模块的 VCS(如 Git),您可以将模型放入不同的存储库,并将其作为 Rails 应用程序的子模块。这将为您提供几乎毫不费力的代码共享 - Rails 甚至不会知道您在作弊。

    【讨论】:

    • 我认为子模块是个坏主意,因为它将存储库结构与代码结构分开(例如,您如何处理测试等?)
    • 然后将子模块拉入供应商并设置从主结构到子模块的符号链接(可能带有 Rake 任务)可能是一个答案。基本上这就像拥有一个单独的 Gem,但没有 Gem 打包和重新加载开销。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-05-07
    • 1970-01-01
    • 2012-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-08-24
    相关资源
    最近更新 更多