class Contracts::Decorator
Attributes
Public Class Methods
Source
# File lib/contracts/decorators.rb, line 29 def self.inherited(klass) super name = klass.name.gsub(/^./) { |m| m.downcase } return if name =~ /^[^A-Za-z_]/ || name =~ /[^0-9A-Za-z_]/ # the file and line parameters set the text for error messages # make a new method that is the name of your decorator. # that method accepts random args and a block. # inside, `decorate` is called with those params. MethodDecorators.module_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1 def #{klass}(*args, &blk) ::Contracts::Engine.fetch_from(self).decorate(#{klass}, *args, &blk) end RUBY_EVAL end
Calls superclass method
Source
# File lib/contracts/decorators.rb, line 46 def initialize(klass, method) @method = method end