Фактическое техническое решение довольно просто.
Вы можете просто установить два совершенно разных приложения rails - приложение API и приложение веб-интерфейса.Вы можете создавать приложения с помощью:
rails new app my_app_api --api
rails new app my_app
Каждое из них живет в своем собственном хранилище и может быть разработано отдельно.Каждое приложение работает на своем собственном сервере / dynos / что угодно.Вы можете смонтировать их в одном домене (example.com и api.example.com), изменив настройки CNAME своего домена.
Вы можете обмениваться кодом между приложениями, такими как модели, создав rails engine (драгоценный камень, который может быть установлен в рельсах).Драгоценный камень не должен быть публичным .
Преимущества этого подхода в том, что вы можете использовать более тонкий сервер для своего API, поскольку он не требует промежуточного программного обеспечения / гемов, необходимых для чего-то еще, кроме выплескивания JSON, и что разработку API можно отделить.Недостатком является повышенная сложность и потенциальное дублирование кода и усилий.
Однако, что вы действительно должны учитывать, так это то, что усилия по настройке отдельного приложения рельсов внешнего интерфейса в значительной степени напрасны, если желаемой конечной целью является SPA.Возможно, создание интерфейса rails будет не таким быстрым, и вы на самом деле не сможете много использовать повторно в коде.Вы также будете дублировать большую часть серверной логики, такой как маршруты и контроллеры.
Разработка вашего API также может быть затруднена, если вы не «едите свою собачью еду».