Управление жизненным циклом сервера приложений Rails
Мы разрабатываем приложение, которое имеет клиент для iPhone и сервер Rails. Мы выпустили первую версию и сейчас начинаем работать над версией 1.1. Нам было интересно, есть ли какие-либо инструменты (внешние или предоставляемые hostingrails) для удовлетворения этих двух основных требований: - версии для разработки / производства приложения Rails - одновременные живые версии приложения (API с поддержкой версий), например, для поддержки старых версий клиентское приложение айфон.
Первый подход, о котором мы думаем сейчас, - это дублирование приложения для каждой версии API, которую мы хотим иметь, на каждую из которых ссылается конкретный URL, например: myapp.com/v1, myapp.com/v2... Весь этот стек сам дублировался бы, чтобы иметь живую / рабочую версию и версию для разработки. После тестирования версия разработки будет заменена на рабочую версию.
Что вы думаете об этом подходе? Существуют ли инструменты, позволяющие управлять жизненным циклом приложения? Есть ли в Rails встроенные функции, облегчающие это?
Спасибо
2 ответа
Простейшей вещью будет просто поддерживать ваш API обратно совместимым, что устраняет необходимость поддерживать две версии API, и если вам необходимо развивать его таким образом, который нарушает обратную совместимость, не рекомендуется использовать старый API и дать ему реальное завершение. дата, чтобы вы не поддержали это до бесконечности.
Если вам абсолютно необходимо пойти по этому пути, сначала прочтите сообщение в блоге Фаулера по этой теме (http://martinfowler.com/bliki/TolerantReader.html), а затем посмотрите на пространство имен ваших маршрутов API. В Rails вы можете сделать это с помощью маршрутов и контроллеров с пространством имен, так что вы можете получить исходный API по адресу /application/endpoint
и ваша новая версия на /application/v2/endpoint
(Я предполагаю, что вы не можете легко изменить свои конечные точки для старых клиентов)
Мне неизвестны какие-либо инструменты, которые явно претендуют на решение проблем, которые, как вы говорите, вы хотите решить, но я думаю, что это больше связано с тем, что разработчики усердно работают над тем, чтобы не нуждаться в них, чем с идеей, что они не решаемы Rails.
Вы рассматривали возможность использования поддоменов?: http://railscasts.com/episodes/221-subdomains-in-rails-3