Ответ 1
Я столкнулся с этой проблемой и считаю, что решил. Я надеялся найти простой генератор рельсов, чтобы преобразовать его, но, если я не пропустил что-то, это не так просто. Однако рельсы делают это проще, чем делать это полностью вручную.
Ключ в том, что команда rails new
может использоваться в существующем приложении. Обратите внимание, что в этом ответе предполагается, что вы знаете, как использовать git и используете его в существующем приложении.
Прежде всего, самое главное, создайте новую ветку. Это выполняет две функции: 1), поэтому вы не должны терять работу, если вы ее испортите (хотя все же может быть подходящее время для ее резервного копирования, например, GitHub) и 2), чтобы вы могли сравнивать файлы, которые конфликты после этого процесса и получить любую работу, которую этот процесс перезаписывает (для меня это было не так много, но это было важно).
В терминале из каталога приложения вы хотите перейти от API только к стандарту. Выполните следующие команды, чтобы перейти в один каталог, а затем рельсы напишите новый проект поверх существующего. Используйте те же параметры для второй команды, которую вы использовали при создании своего приложения. Например, для меня я заменил [options]
ниже на -d postgresql --skip-turbolinks --skip-spring -T
, потому что это параметры, которые я использовал при создании своего приложения. Я использую флаг --skip-bundle
, потому что он может изменить ваш Gemfile больше, чем вы этого захотите, и вы, вероятно, захотите изменить его часть перед связыванием.
$ cd ..
$ rails new your_app_name --skip-bundle [options]
Теперь rails проведет обычный процесс создания всех файлов для нового приложения, но на этот раз он будет пропускать почти все из них, потому что они уже есть. Он остановится на каждом из них, на котором есть конфликт, и где вам нужно будет анализировать конфликты один за другим.
Вот что сработало для меня в конфликтующих файлах:
- Отправить
d
для каждого из них, чтобы увидеть различия. - Если разница заключается только в добавлении строк, то разрешите ее с помощью
y
. Вот почему мы делаем это в конце концов. - Если разница заключается только в удалении кода, то отклоните его с помощью
n
. - Если разница заключается в добавлении и удалении кода, запишите этот файл, чтобы вернуться после этого процесса. Затем примите его
y
.
По завершении этого использования используйте git, чтобы изучить разницу в каждом файле из (4), который вы записали. Вы хотите сохранить изменения, которые добавили рельсы, но тогда вы, скорее всего, захотите скопировать весь код, который он удалил. Вероятно, это будет Gemfile.
Заметным отличием является то, что рельсы изменят контроллер приложения от наследования от ActionController::API
до ActionController::Base
. Я хочу один контроллер для каждого, поэтому я создал новый файл `app/controllers/api_controller.rb '. Затем я скопировал то, что было в моем исходном приложении ApplicationController, к новому файлу и просто изменил имя класса на ApiController. Затем я изменил все существующие контроллеры API, чтобы наследовать от нового ApiController, а не от ApplicationController.
После этого запустите bundle install
, чтобы установить рельсы драгоценных камней, добавленные в приложение.
Это сработало для меня. Я надеюсь, что это помогает. Удачи!