Понял проблему.
Чтобы создать файл, вам нужно использовать create_file
метод
def create_file file, path = nil, acl: nil, cache_control: nil,
content_disposition: nil, content_encoding: nil,
content_language: nil, content_type: nil,
crc32c: nil, md5: nil, metadata: nil,
encryption_key: nil, encryption_key_sha256: nil
ensure_service!
options = { acl: File::Acl.predefined_rule_for(acl), md5: md5,
cache_control: cache_control, content_type: content_type,
content_disposition: content_disposition, crc32c: crc32c,
content_encoding: content_encoding,
content_language: content_language, metadata: metadata,
key: encryption_key, key_sha256: encryption_key_sha256 }
ensure_file_exists! file
path ||= Pathname(file).to_path
gapi = service.insert_file name, file, path, options
File.from_gapi gapi, service
end
В моем случае я загружаю звук, создавая временный файл, а затем помещаю этот временный файл. в методе.
storage = Google::Cloud::Storage.new(project: ENV['GOOGLE_ID'],
keyfile: ENV['GOOGLE_JSON'] )
bucket = storage.bucket( ENV['GOOGLE_BUCKET'] )
bucket.create_file(sound.tempfile, some_filename)