Sha256: 8b0c5339686feca7168ae96d817e6db2c0838bf3ed349f47d6a07a8f0f40d63d

Contents?: true

Size: 833 Bytes

Versions: 1

Compression:

Stored size: 833 Bytes

Contents

# frozen_string_literal: true
# On the fly delegation from the decorator to the decorated object and the helpers.
module ActiveDecorator
  module Helpers
    def method_missing(method, *args, &block)
      super
    rescue NoMethodError, NameError => e
      # the error is not mine, so just releases it as is.
      raise e if e.name != method

      begin
        (view_context = ActiveDecorator::ViewContext.current).send method, *args, &block
      rescue NoMethodError => e
        raise e if e.name != method

        raise NoMethodError.new("undefined method `#{method}' for either #{self} or #{view_context}", method)
      rescue NameError => e
        raise e if e.name != method

        raise NameError.new("undefined local variable `#{method}' for either #{self} or #{view_context}", method)
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
active_decorator-1.0.0 lib/active_decorator/helpers.rb