我目前正在使用 Ruby on Rails 构建 2 个 API。一个 if 用于读取(查找对象、查询),另一个用于实际写入,涉及一种带有队列和另一个 API 的复杂过程。两个应用程序都需要完全相同的模型和内部逻辑。
我的问题是,在 2 个 Rails 应用程序之间共享模型规范(关系、范围、方法)的最常见的最佳实践或方法是什么?
谢谢!
如果您只想共享模型,您可以将其他项目模型文件夹添加到自动加载路径中:
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”技巧,并从第三个共享代码存储库中提取代码。 我将其作为引擎和外部 git 参考放入两个应用程序中。
这需要更多的工作,但是一旦您在一个应用程序中完成一次,就可以轻松地将其用作下一个应用程序的模板。
你可以尝试使用 git 子模块来完成这项工作。