【问题标题】:Best practices when including Rails models in another application在另一个应用程序中包含 Rails 模型时的最佳实践
【发布时间】:2012-11-22 03:49:25
【问题描述】:

我正在开发一个 ruby​​ 应用程序,它使用来自另一个 Ruby on Rails Web 应用程序的模型和数据作为其主要数据源。

Rails 模型通过在主文件中包含 environment.rb 文件来包含在此应用程序中,如下所示:

# Require Rails
 require_relative "../../RailsApp/config/environment.rb"

这可行,但是在加载使用 Rails Gemfile 中定义的 gem 的模型时存在未初始化的依赖关系。 (例如acts_as_taggable_on, rack-pjax, devise等)

这个 ruby​​ 应用程序依赖项也通过 Bundler 进行管理,因此目前让应用程序正常工作的唯一方法是将 Rails 的 Gemfile 中的内容复制并粘贴到 ruby​​ 应用程序的 Gemfile 中。

显然这种方法不是最优的,因为宝石要求是重复的。

有没有更好的方法在另一个应用程序中包含 Rails 及其模型所需的依赖项?有没有办法将 Gemfile 包含到另一个文件中?

【问题讨论】:

    标签: ruby-on-rails ruby gem bundler


    【解决方案1】:

    这里有一些选项,为了简单起见

    1. 只需将所有内容保存在一个应用程序中,这样可以更轻松地处理很多事情
    2. 使用插件共享通用代码
    3. 使用网络服务共享数据

    【讨论】:

    • 最后我选择了 3,我们在 /vendor/app_name 下创建了一个目录,并设法摆脱了重复的 gemfile,并在需要环境的 rails 下创建了 rake 任务,所以我不需要不再包含 rails 模型。谢谢
    【解决方案2】:

    您可以将模型和代码从 RailsAppA 提取到 Gem 中。 RailsAppA 然后包含该 Gem 并使用它。

    gem 可以保留在私有存储库中,不需要发布。

    两个应用程序都会执行以下操作:

    gem "yourapp-modelage", git: "http://github.com/you/yourapp-modelage.git"
    

    然后,App2 也将使用该 Gem...进入 Gem 的数量取决于您需要重用多少。

    【讨论】:

      猜你喜欢
      • 2010-09-28
      • 1970-01-01
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 2011-02-22
      • 2011-01-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多