Как вывести внешнюю модель Rails (api / gem / plugin) - PullRequest
2 голосов
/ 01 января 2012

В настоящее время я работаю над приложением RoR (2.3.14 с ActiveRecord) (назовем его A).

Теперь я запустил другой проект B (приложение для удаленного тестирования с использованием капибары, выглядит примерно так:https://github.com/searls/remote-capybara-cucumber-example).

Но теперь мне нужно иметь доступ к модели приложения B для настройки тестовых данных (и, возможно, проверочных утверждений). Поэтому я хотел бы использовать существующие классы моделей (и некоторые дополнительные библиотеки, такие как factory_girl).при необходимости).

Я, конечно, не хочу оборачивать свой проект B в приложение Rails и копировать классы модели. Так что есть способ организовать A так, чтобы B мог получить доступ к модели и создать / обновить/ Разрушить сущности?

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

Ответы [ 2 ]

1 голос
/ 01 января 2012

В Rails 2.x очень сложно разделить слой модели между двумя приложениями.

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

Другим способом является символическая ссылка каталогов db и app/models из обоих приложений в общую папку.Это работает довольно хорошо, хотя вы должны быть осторожны, потому что задачи rake и генераторы теперь влияют на оба приложения.

Rails 3.1 поставляется с улучшенной реализацией движков rails.Двигатели позволяют изолировать части приложения рельсов и упаковать их как драгоценный камень.

0 голосов
/ 19 января 2012

Вы можете попробовать использовать псевдоним (символическую ссылку) для каталога app / models приложения A в проекте B.

В Mac / Linux:

ln -s /volumes/code/project-a/app/models/ /volumes/code/project-b/models
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...