Special case of contracts engine for eigenclasses We don't care about eigenclass of eigenclass at this point
Class that owns this eigenclass
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 17 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
Fetches just eigenclasses decorators
# File lib/contracts/engine/eigenclass.rb, line 34 def all_decorators pop_decorators end
No-op for eigenclasses
# File lib/contracts/engine/eigenclass.rb, line 30 def set_eigenclass_owner end
# File lib/contracts/engine/eigenclass.rb, line 45 def owner? !!owner_class end
Fails when contracts are not included in owner class
# File lib/contracts/engine/eigenclass.rb, line 41 def validate! fail ContractsNotIncluded unless owner? end