This repository was archived by the owner on Nov 9, 2017. It is now read-only.
File tree Expand file tree Collapse file tree 1 file changed +7
-7
lines changed
lib/active_storage/service Expand file tree Collapse file tree 1 file changed +7
-7
lines changed Original file line number Diff line number Diff line change @@ -18,24 +18,24 @@ def initialize(primary:, mirrors:)
18
18
end
19
19
20
20
def upload ( key , io , checksum : nil )
21
- each_service . collect do |service |
22
- service . upload key , io . tap ( &:rewind ) , checksum : checksum
21
+ perform_async_across_services do |service |
22
+ service . upload key , StringIO . new ( io . tap ( &:rewind ) . read ) , checksum : checksum
23
23
end
24
24
end
25
25
26
26
def delete ( key )
27
- perform_across_services : delete, key
27
+ perform_async_across_services { | service | service . delete key }
28
28
end
29
29
30
30
private
31
31
def each_service ( &block )
32
32
[ primary , *mirrors ] . each ( &block )
33
33
end
34
34
35
- def perform_across_services ( method , * args )
36
- promises = services . collect do |service |
37
- Concurrent ::Promise . execute { service . public_send method , * args }
35
+ def perform_async_across_services ( & block )
36
+ promises = each_service . collect do |service |
37
+ Concurrent ::Promise . execute { yield service }
38
38
end
39
- Concurrent ::Promise . zip ( *promises ) . value
39
+ Concurrent ::Promise . zip ( *promises ) . value!
40
40
end
41
41
end
You can’t perform that action at this time.
0 commit comments