在2个Rails API之间共享模型(单独的应用程序)

我目前正在使用Ruby on Rails构建2个API。 一个用于读取(查找对象,查询)而另一个用于实际写入它,涉及一种具有队列和另一个API的复杂过程。 两个应用程序都需要完全相同的模型和逻辑。

我的问题是,在两个rails应用程序之间共享模型规范(关系,范围,方法)的最常见最佳实践或方法是什么?

谢谢!

你可以看看:

  • 在不同的Rails应用程序之间共享ActiveRecord模型和数据的最佳方式?
  • 两个rails应用程序共享模型文件夹
  • 两个Rails应用程序之间的共享模型 – Workflow的理想解决方案是什么?

我这样做的方式是’可安装引擎’。 有关详细信息,请查看Ryan Bates的首发Railscast和api.rubyonrails.org的引擎部分 。

最诚挚的问候,Mandi

如果您只想共享模型,可以将其他项目模型文件夹添加到自动加载路径中:

rails new test1 rails new test2 cd test1 rails g model User cd ../test2/ # ACTION REQUIRED: edit config/application.rb adding this line # inside the class Application < Rails::Application block: # # config.autoload_paths += %W(#{config.root}/../test1/app/models) # mkdir db/migrate cp ../test1/db/migrate/*_create_users.rb db/ mv db/*_create_users.rb db/migrate/ rake db:migrate rails r 'puts User.inspect' #=> User(id: integer, created_at: datetime, updated_at: datetime) 

您还可以设置整个内容,以便将两个app/models文件夹设置为私有,使用第三个共享文件夹,将其添加到项目中:

 # config.autoload_paths += %W(/path/to/a/shared/folder) 

这个文件夹甚至可以不是每个项目的相同文件夹,因此它可以是git子模块的路径,例如(如果你使用GIT,我推荐这个解决方案)。

另一个选项可能是将app/models指向具有软链接的共享文件夹

我这样做的诀窍是不实际使用Rails技巧。 我使用“git”技巧,并从第3个共享代码仓库中提取代码。 我将它作为引擎放在两个应用程序中,并作为外部git引用。

这是一个更多的工作,但是一旦你在一个应用程序中完成了一次,它也很容易用作下一个应用程序的模板。

你可以尝试git submodule来完成这项工作。

http://git-scm.com/book/en/Git-Tools-Submodules