Sha256: aaff4ca45a205a0b2dfc46478871a5e9a10a01dcf0ebbdc14e2ba03785eddf0d
Contents?: true
Size: 1.57 KB
Versions: 2
Compression:
Stored size: 1.57 KB
Contents
module EitilWrapper module ControllerDecorator private def decorate(dec_item, dec_method: nil, dec_class: nil, **dec_kwargs) all_args_to_ivars binding set_ivars :dec_class, :decorator, :dec_method send_to_decorator end def send_to_decorator @decorator.send(@dec_method, @dec_item) rescue NoMethodError => e inform_no_method_for_decorator_error @dec_item end def inform_no_method_for_decorator_error message = "Warning: NoMethodError for #{@dec_class}##{@dec_method}, returned @dec_item instead." Logger.new("#{Rails.root}/log/decorator_log.log").warn message warn message end def set_dec_method @dec_method = @dec_method || derived_dec_method || :base end def derived_dec_method return unless respond_to? :params return :app if @decorator.respond_to?(:app) && params["isMobile"] return :web if @decorator.respond_to?(:web) && params["isWeb"] end def set_dec_class @dec_class = @dec_class ? manual_set_dec_class : derived_dec_class end def manual_set_dec_class "#{@dec_class}Decorator".constantize end def derived_dec_class "#{@dec_item.class.name}Decorator".constantize end def set_decorator @dec_class.new ivars end def controller_ivars Eitil.controller_ivars.map do |ivar| { ivar => instance_variable_get("@#{ivar.to_s}") } end.inject &:merge end def ivars @dec_kwargs ? controller_ivars.merge(@dec_kwargs) : controller_ivars end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
eitil-1.1.25 | eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb |
eitil-1.1.24 | eitil_wrapper/lib/eitil_wrapper/decorators/controller_decorator.rb |