module Hyperstack::Internal::AutoUnmount
Public Class Methods
included(base)
click to toggle source
# File lib/hyperstack/internal/auto_unmount.rb, line 4 def self.included(base) base.include(Hyperstack::Internal::Callbacks) base.class_eval do define_callback :before_unmount end end
objects_to_unmount()
click to toggle source
# File lib/hyperstack/internal/auto_unmount.rb, line 49 def objects_to_unmount @objects_to_unmount ||= Hash.new { |h, k| h[k] = Set.new } end
Public Instance Methods
after(*args, &block)
click to toggle source
Calls superclass method
# File lib/hyperstack/internal/auto_unmount.rb, line 39 def after(*args, &block) return if unmounted? super.tap do |id| sself = self id.define_singleton_method(:unmount) { abort } AutoUnmount.objects_to_unmount[self] << id end end
every(*args, &block)
click to toggle source
Calls superclass method
# File lib/hyperstack/internal/auto_unmount.rb, line 30 def every(*args, &block) return if unmounted? super.tap do |id| sself = self id.define_singleton_method(:unmount) { abort } AutoUnmount.objects_to_unmount[self] << id end end
unmount()
click to toggle source
# File lib/hyperstack/internal/auto_unmount.rb, line 15 def unmount run_callback(:before_unmount) AutoUnmount.objects_to_unmount[self].each(&:unmount) AutoUnmount.objects_to_unmount.delete(self) instance_variables.each do |var| val = instance_variable_get(var) begin val.unmount if val.respond_to?(:unmount) rescue RUBY_ENGINE == 'opal' ? JS::Error : nil nil end end @__hyperstack_internal_auto_unmount_unmounted = true end
unmounted?()
click to toggle source
# File lib/hyperstack/internal/auto_unmount.rb, line 11 def unmounted? @__hyperstack_internal_auto_unmount_unmounted end