Sha256: f68c40b97ef975f388b13f9d8b21f050bdd0a65222a57cb274f0aa1f6bc23373
Contents?: true
Size: 1.26 KB
Versions: 2
Compression:
Stored size: 1.26 KB
Contents
module Draper module AutomaticDelegation extend ActiveSupport::Concern # Delegates missing instance methods to the source object. def method_missing(method, *args, &block) return super unless delegatable?(method) self.class.delegate method send(method, *args, &block) end # Checks if the decorator responds to an instance method, or is able to # proxy it to the source object. def respond_to?(method, include_private = false) super || delegatable?(method) end # @private def delegatable?(method) source.respond_to?(method) end module ClassMethods # Proxies missing class methods to the source class. def method_missing(method, *args, &block) return super unless delegatable?(method) source_class.send(method, *args, &block) end # Checks if the decorator responds to a class method, or is able to proxy # it to the source class. def respond_to?(method, include_private = false) super || delegatable?(method) end # @private def delegatable?(method) source_class? && source_class.respond_to?(method) end end included do private :delegatable? private_class_method :delegatable? end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
draper-1.1.0 | lib/draper/automatic_delegation.rb |
draper-1.0.0 | lib/draper/automatic_delegation.rb |