From 9e5fcaa4e0e47370e482d1f378583be41fa8c157 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Karel=20Pi=C4=8Dman?= Date: Thu, 27 Nov 2025 13:36:54 +0100 Subject: [PATCH] #9 Active Storage - io must be rewindable --- lib/redmine_dmsf/webdav/dmsf_resource.rb | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/lib/redmine_dmsf/webdav/dmsf_resource.rb b/lib/redmine_dmsf/webdav/dmsf_resource.rb index 6b639d46..39ca604a 100644 --- a/lib/redmine_dmsf/webdav/dmsf_resource.rb +++ b/lib/redmine_dmsf/webdav/dmsf_resource.rb @@ -630,8 +630,17 @@ module RedmineDmsf new_revision.disk_filename = new_revision.new_storage_filename unless reuse_revision if new_revision.save - Rails.logger.info ">>> #{request.body.class.name}: #{request.body.respond_to?(:rewind)}" - new_revision.copy_file_content request.body + if request.body.respond_to?(:rewind) + new_revision.copy_file_content request.body + else # A workaround for Webrick that doesn't support rewind + stream = StringIO.new + while (buffer = request.body.read(8_192)) + stream.write buffer + end + stream.rewind + new_revision.copy_file_content stream + stream.close + end new_revision.save # Notifications DmsfMailer.deliver_files_updated project, [f]