Sha256: 184f92e204286494799f6042f44b336d52f2e3fb954070db55960aafa259347a
Contents?: true
Size: 1 KB
Versions: 2
Compression:
Stored size: 1 KB
Contents
class Frenetic module Structured # Stores the unique signature of each Resource Structure # Used to determine when a Structure has changed and thus # needs to be redefined. @@signatures = {} def struct_key "#{self.class}::FreneticResourceStruct".gsub '::', '' end def signature @attrs.keys.sort.join('') end def structure if structure_expired? rebuild_structure! else fetch_structure end end def fetch_structure Struct.const_get struct_key end def rebuild_structure! destroy_structure! @@signatures[struct_key] = signature Struct.new(struct_key, *@attrs.keys) end def structure_expired? @@signatures[struct_key] != signature end def structure_defined? Struct.constants.include? struct_key.to_sym end def destroy_structure! return unless structure_defined? @@signatures.delete struct_key Struct.send :remove_const, struct_key end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
frenetic-2.0.0 | lib/frenetic/concerns/structured.rb |
frenetic-1.0.0 | lib/frenetic/concerns/structured.rb |