Class: Fiona7::WidgetGc::SweepStrategies::ArchiveSweep

Inherits:
Object
  • Object
show all
Defined in:
lib/fiona7/widget_gc/sweep_strategies/archive_sweep.rb

Overview

This garbage collection strategy deletes BOTH working and released versions of garbage widget objects This effecively nukes the widget object. NOTE: It normally requires permissionRoot on all garbage widget objects. But since it is meant to be used during release process, which only requires permissionWrite permission elevation is used

This strategy should be only used shortly before releasing the page

Instance Method Summary collapse

Constructor Details

#initialize(object, widget_resolver) ⇒ ArchiveSweep

Returns a new instance of ArchiveSweep.



15
16
17
18
# File 'lib/fiona7/widget_gc/sweep_strategies/archive_sweep.rb', line 15

def initialize(object, widget_resolver)
  self.object = object
  self.widget_resolver = widget_resolver
end

Instance Method Details

#sweep!(garbage) ⇒ Object



20
21
22
23
24
25
26
27
28
29
30
# File 'lib/fiona7/widget_gc/sweep_strategies/archive_sweep.rb', line 20

def sweep!(garbage)
  # NOTE: this emulates permission elevation:
  # permissionWrite -> permissionRoot
  return unless self.object.permission.write?

  garbage.each do |widget_object_id|
    # TODO: improve performance here
    widget_object = self.widget_resolver.all.find {|w| w.id == widget_object_id }
    archive!(widget_object)
  end
end