1

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

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

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

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

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

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

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

4

2 回答 2

6

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

  1. 只需将所有内容保存在一个应用程序中,这样就可以轻松完成很多事情
  2. 使用插件共享通用代码
  3. 使用 Web 服务共享数据
于 2012-06-12T20:53:36.800 回答
3

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

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

然后,这两个应用程序都会执行以下操作:

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

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

于 2012-06-12T20:55:50.290 回答