2017-02-20 2 views
0

У меня есть некоторые модели в моем приложении Rails, которые я также хотел бы использовать в скрипте Ruby, который развертывается на отдельных виртуальных машинах.Совместное использование моделей между Rails App и Ruby Script

Я мог бы создать драгоценный камень, который включает в себя эти модели, а затем потребовать этот камень от обоих приложений. Я мог бы также связать репозитории в github, чтобы модели из приложения rails были развернуты с помощью скрипта Ruby.

Я чувствую, что подход с драгоценными камнями может работать, но не уверен, что такое лучшая практика здесь.

Есть ли другие варианты?

Благодаря

+0

Можете ли вы рассказать о том, как модели будут использоваться в автономном скрипте Ruby? Вы имеете в виду только объектную модель, или вам также требуется способность взаимодействовать с существующими моделями в вашей БД? –

+0

Это в основном для взаимодействия db. Поэтому просто разоблачение/потребление API имеет для этого смысл. – grizzthedj

+0

Gotcha.Я хотел бы отметить, что в зависимости от конфигурации развертывания и конкретных требований к сценарию может возникнуть смысл развернуть ваше приложение rails для других систем и реализовать ваши сценарии в виде рейк-задач, а также запустить рубиновый скрипт, который взаимодействует с другим сервером. –

ответ

1

Если вы контроллеры доступны через JSON, вы сможете получить доступ к ним легко через Интернет.

http://localhost:3000/people.json

[ 
    {"id":1, 
    "name":"Eva Smith", 
    "age":42, 
    "created_at":"2017-02-20T18:52:38.414Z", 
    "updated_at":"2017-02-20T18:53:03.112Z", 
    "url":"http://localhost:3000/people/1.json"}, 
    {"id":2, 
    "name":"John Smith", 
    "age":32, 
    "created_at":"2017-02-20T18:52:55.463Z", 
    "updated_at":"2017-02-20T18:52:55.463Z", 
    "url":"http://localhost:3000/people/2.json"} 
] 

Вы можете разобрать это на конце Ruby, и превратить его в массив объектов.

JSON.parse(json_string, object_class: OpenStruct)

+0

Я думаю, что разоблачение конечных точек здесь имеет наибольший смысл! – grizzthedj

0

Я думал, что расширение на мой ответ. Зная теперь, что вопрос заключается в том, как использовать записи, существующие на вашем сервере в других сценариях, есть два варианта. Вы делаете это в приложении или вне?

Запуск сценариев как Rake задачи

Загрузить копию приложения в виртуальных машинах в вопросе и запустить скрипт в качестве задачи граблей. Преимущества этого являются простыми:

  • Более тесная интеграция между сценарием и логикой модели.
  • Изменение API-интерфейсов намного проще, если вам нужно управлять только одной базой кода.
  • Обмен кодами (методы модели, помощники и т. Д.)
  • Никакой зависимости от дополнительного сервера Rails.

Недостатки:

  • VM ресурсы, требуемые в процессе развертывания (камень установить, спин-вверх, и т.д.), не могут быть практичными.
  • Требуется возможность развертывания изменений в виртуальных машинах одновременно с изменениями сервера.

Вынести записи с API

Преимущество в значительной степени инверсии выше.

Смежные вопросы