Как я могу гарантировать, что если я выполняю закачку файла HTTP (например, чтобы обновить существующий файл с v1 в моем веб-приложении до v2), он действует транзакционно?
Это означает, что в данном случае мое веб-приложение имеет v1 файла, но как часть интерфейса администратора я могу обновить этот файл. Если при загрузке v2 возникает проблема с загрузкой файла, я хочу убедиться, что v1 все еще на месте, а не поврежденная копия v2.
Другой способ задать этот вопрос может заключаться в том, могу ли я разрешить серверу на загрузку файла кода указывать файл непосредственно туда, куда он должен идти, ИЛИ (действительно ли (если загрузка файла HTTP не является транзакцией) мне действительно нужно добавьте некоторый дополнительный код на стороне сервера, чтобы выполнить двухэтапный процесс (а) загрузки во временное местоположение и затем (б) в случае успеха, затем перенести его в окончательное местоположение (но я все же хотел бы дать клиенту указание о том, загрузка в целом сработала или нет), и (c) есть некоторые поля состояния базы данных для обновления также на стороне сервера.
Я думаю, что это общий вопрос, однако могу отметить, что в моем случае серверная часть представляет собой приложение Ruby on Rails.
Любые предложения с точки зрения хорошего подхода приветствуются.
Спасибо