Мой основной вопрос: если я неоднократно копирую приложение Rails, так что существует много поколений одного и того же репо (то есть, различные итерации каталога и файлов приложения Rails), что мне нужно сделать, чтобы сервер работает нормально и избежать серьезных проблем?
Я пишу обучающее приложение , которое обучает пользователя задачам программирования. Сейчас он поддерживает только однофайловые задачи. Далее я хочу добавить поддержку задач с несколькими файлами, включая задачи HTML / CSS / JS и Rails (например, «добавить модель, которая делает то-то и то-то» или «добавить тест Minitest для такой-то функции» ). Пользователь будет обязан редактировать код Rails напрямую, и мое приложение автоматически запустит сервер и покажет результаты. После ответа на каждый вопрос (т. Е. Каждая задача выполняется) мое приложение автоматически переносит базу данных по мере необходимости и заново копирует репозиторий из архива - в основном, готовя сцену для следующего раза, когда пользователь выполнит задачу. (Ну, я надеюсь, что это хорошая идея.)
Поскольку приложения Rails настолько велики и сложны, конечно, невозможно создать и добавить отдельное приложение Rails для каждого вопроса. Вместо этого у меня будет много вопросов / задач, основанных на том же репо (установке). После того, как на каждый вопрос дан ответ (то есть выполнено каждое задание), база данных будет перенесена по мере необходимости, а репо скопирован заново из архива. Все идет нормально? (Я ожидаю проблем с использованием Git для этого ... поэтому я бы просто использовал для этого Minitar .)
Но, конечно, мне придется делать другие версии того же репо (используя ту же базу данных или, возможно, копию), когда я делаю другие группы вопросов. Например, мне может потребоваться куча вопросов / задач, связанных с использованием AJAX в Rails, и для этого мне нужно подготовить установку различными способами. Но если я просто создаю копию предыдущего репо, которая имеет свои собственные задачи, вызовет ли процесс копирования проблемы для последующего репо и его задач?
Я провел некоторое тестирование. Я уже подтвердил, что если я просто выполню cp -r repo1/ repo2/
, а затем rails s
в repo2
, сервер для последнего запустится нормально. Хотя данные, записанные в repo2
, не отображаются в repo1
, я не могу создать модель с одноименным названием (что немного озадачивает). Я полагаю, что это может быть проблемой для некоторых вопросов, т. Е. Я не хочу, чтобы они запускались из одной и той же базы данных для всех репозиториев, даже если более поздние версии базируются на более ранних версиях. Поэтому всякий раз, когда я копирую репозиторий, я думаю, что я хочу сделать копию базы данных , как описано здесь . Звук верно?
Есть ли что-то еще, что мне нужно было бы сделать при создании этой функции, чтобы предотвратить проблемы, связанные с повторным копированием разных итераций одного и того же репо (и базы данных)?