From 4b426ec5b9ed6f95157f0c8b00f74ff691e04ca3 Mon Sep 17 00:00:00 2001 From: evazion Date: Tue, 10 Dec 2019 13:54:57 -0600 Subject: [PATCH] storage manager: fix b2 storage bugs. * B2 doesn't allow the path to start with a '/' character. * When storing the file, we have to rewind the file pointer to make sure we get the whole file. --- app/logical/storage_manager/cloud.rb | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/app/logical/storage_manager/cloud.rb b/app/logical/storage_manager/cloud.rb index be1b0facc..c04c1798b 100644 --- a/app/logical/storage_manager/cloud.rb +++ b/app/logical/storage_manager/cloud.rb @@ -9,19 +9,24 @@ class StorageManager::Cloud < StorageManager end def store(io, path) + io.rewind # XXX caller should be responsible for this. data = io.read - client.put_object(bucket, path, data) + client.put_object(bucket, key(path), data) end def delete(path) - client.delete_object(bucket, path) + client.delete_object(bucket, key(path)) end def open(path) file = Tempfile.new(binmode: true) - response = client.get_object(bucket, path) + response = client.get_object(bucket, key(path)) file.write(response.body) file.rewind file end + + def key(path) + path.delete_prefix("/") + end end