class Contracts::Engine::Eigenclass
Special case of contracts engine for eigenclasses We don't care about eigenclass of eigenclass at this point
Attributes
owner_class[RW]
Class that owns this eigenclass
Public Class Methods
lift(eigenclass, owner)
click to toggle source
Automatically enables eigenclass engine if it is not Returns its engine NOTE: Required by jruby in 1.9 mode. Otherwise inherited eigenclasses don't have their engines
@param [Class] eigenclass - class in question @param [Class] owner - owner of eigenclass @return [Engine::Eigenclass]
# File lib/contracts/engine/eigenclass.rb, line 19 def self.lift(eigenclass, owner) return Engine.fetch_from(eigenclass) if Engine.applied?(eigenclass) Target.new(eigenclass).apply(Eigenclass) eigenclass.extend(MethodDecorators) # FIXME; this should detect what user uses `include Contracts` or # `include Contracts;;Core` eigenclass.send(:include, Contracts) Engine.fetch_from(owner).set_eigenclass_owner Engine.fetch_from(eigenclass) end
Public Instance Methods
all_decorators()
click to toggle source
Fetches just eigenclasses decorators
# File lib/contracts/engine/eigenclass.rb, line 35 def all_decorators pop_decorators end
set_eigenclass_owner()
click to toggle source
No-op for eigenclasses
# File lib/contracts/engine/eigenclass.rb, line 32 def set_eigenclass_owner; end
Private Instance Methods
owner?()
click to toggle source
# File lib/contracts/engine/eigenclass.rb, line 46 def owner? !!owner_class end
validate!()
click to toggle source
Fails when contracts are not included in owner class
# File lib/contracts/engine/eigenclass.rb, line 42 def validate! fail ContractsNotIncluded unless owner? end