Подтвердить что ты не робот

Совместное использование моделей между двумя Rails API (отдельными приложениями)

В настоящее время я создаю 2 API, используя Ruby on Rails. Один, если для чтения (поиск объектов, запросов), а другой - для собственно записи на него, с участием сложного процесса с очередями и другого API. Оба приложения требуют в них одинаковые модели и логику.

Мой вопрос в том, какая наиболее распространенная передовая практика или подход для обмена спецификациями моделей (отношениями, областями, методами) между двумя рельсовыми приложениями?

Спасибо!

4b9b3361

Ответ 3

Если вы просто хотите поделиться моделями, вы можете добавить другую папку моделей проектов в свои пути автозагрузки:

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 в общую папку с мягкой ссылкой

Ответ 4

Мой трюк для этого заключается в том, чтобы на самом деле не использовать трюки Rails. Я использую трюки "git" и извлекаю код из третьего репликации с общим кодом. Я помещал это в оба приложения в качестве движка и как внешнюю ссылку git.

Это немного больше работы, но как только вы сделали это один раз в одном приложении, легко использовать это как шаблон для следующего.