module Praxis::Finalizable
Public Class Methods
extended(klass)
click to toggle source
# File lib/praxis/finalizable.rb, line 5 def self.extended(klass) klass.module_eval do @finalizable = Set.new end end
Public Instance Methods
_finalize!()
click to toggle source
# File lib/praxis/finalizable.rb, line 25 def _finalize! @finalized = true end
finalizable()
click to toggle source
# File lib/praxis/finalizable.rb, line 17 def finalizable @finalizable end
finalize!()
click to toggle source
# File lib/praxis/finalizable.rb, line 29 def finalize! finalizable.reject(&:finalized?).each(&:_finalize!) finalize! unless finalizable.all?(&:finalized?) end
finalized?()
click to toggle source
# File lib/praxis/finalizable.rb, line 21 def finalized? @finalized end
inherited(base)
click to toggle source
# File lib/praxis/finalizable.rb, line 11 def inherited(base) @finalizable << base base.instance_variable_set(:@finalizable, @finalizable) base.instance_variable_set(:@finalized, false) end