module Shrine::Plugins::Mirroring::FileMethods
Public Instance Methods
delete(mirror: true)
click to toggle source
Mirrors delete to other mirror storages.
Calls superclass method
# File lib/shrine/plugins/mirroring.rb, line 98 def delete(mirror: true) result = super() trigger_mirror_delete if mirror result end
mirror_delete()
click to toggle source
Deletes the file from each mirror storage.
# File lib/shrine/plugins/mirroring.rb, line 124 def mirror_delete each_mirror do |mirror| self.class.new(id: id, storage: mirror).delete end end
mirror_delete_background()
click to toggle source
Calls mirror delete block.
# File lib/shrine/plugins/mirroring.rb, line 117 def mirror_delete_background fail Error, "mirror delete block is not registered" unless shrine_class.mirror_delete_block shrine_class.mirror_delete_block.call(self) end
mirror_upload(**options)
click to toggle source
Uploads the file to each mirror storage.
# File lib/shrine/plugins/mirroring.rb, line 82 def mirror_upload(**options) previously_opened = opened? each_mirror do |mirror| rewind if opened? shrine_class.upload(self, mirror, **options, location: id, close: false, action: :mirror) end ensure if opened? && !previously_opened close @io = nil end end
mirror_upload_background(**options)
click to toggle source
Calls mirror upload block.
# File lib/shrine/plugins/mirroring.rb, line 75 def mirror_upload_background(**options) fail Error, "mirror upload block is not registered" unless shrine_class.mirror_upload_block shrine_class.mirror_upload_block.call(self, **options) end
trigger_mirror_delete()
click to toggle source
Mirrors delete if mirrors are defined. Calls mirror block if registered, otherwise mirrors synchronously.
# File lib/shrine/plugins/mirroring.rb, line 106 def trigger_mirror_delete return unless shrine_class.mirrors[storage_key] && shrine_class.mirror_delete? if shrine_class.mirror_delete_block mirror_delete_background else mirror_delete end end
trigger_mirror_upload(**options)
click to toggle source
Mirrors upload if mirrors are defined. Calls mirror block if registered, otherwise mirrors synchronously.
# File lib/shrine/plugins/mirroring.rb, line 64 def trigger_mirror_upload(**options) return unless shrine_class.mirrors[storage_key] && shrine_class.mirror_upload? if shrine_class.mirror_upload_block mirror_upload_background(**options) else mirror_upload(**options) end end
Private Instance Methods
each_mirror(&block)
click to toggle source
Iterates over mirror storages.
# File lib/shrine/plugins/mirroring.rb, line 133 def each_mirror(&block) mirrors = shrine_class.mirrors(storage_key) mirrors.map(&block) end