1

В нашем проекте у нас есть 2 проекта Rails: A и B имеют одну и ту же базу данных, но разные модели. Мой босс не позволяет мне извлекать модели для движка gem/rails для обоих проектов, потому что я новый участник, и для нашего производства требуется много рисков. Поэтому я должен сохранить это как сейчас. Я исследовал много вещей, но до сих пор не имеет решения на данный момент. Позвольте мне подвести итог:Делитесь данными тестирования между двумя рельсовыми приложениями

Проект A обычно используется для создания и сохранения данных в базе данных, чтобы модели в A всегда были актуальными. Проект B используется для загрузки данных, так что проект B не имеет всех моделей как A, а некоторые модели в B не имеют ассоциаций. Моя миссия заключается в добавлении тестов для проекта B. Это мое решение:

Прежде всего, я разделяю один тест базы данных для обоих проектов.

Во-вторых, в проекте A я настраиваю Factory Girl для создания тестовых данных.

Итак, вопрос в том, что из проекта B, как я могу вызвать или запустить проект A для запуска фабричной девушки A, чтобы создать тестовые данные, чтобы проект B мог загрузить эти данные и проверить их?

ответ

0

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

rails g task my_task_name 

Это создаст файл lib/tasks/my_task_name.rake. Написание задач рейк довольно прост:

namespace :my_namespace do 
    task :my_app => :environment do 
    # create some db records here 
    end 
end 

, который вы назвали бы как rake my_namespace:my_app

Использование пространства имен не является обязательным, но => :environment часть важна - это то, что загружает код из приложения рельсы.

При запуске задача рек будет выглядеть в lib/tasks папке любой репо вы в.

+0

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

+0

Да, вы можете запрограммировать оболочку из обратных выходов. –

+0

Не могли бы вы привести пример вызова рейка A из проекта B? В этом случае я все еще не нахожу пример. благодаря –

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