Sha256: f2a65a4a54aafd2a3b4506a7e6c8d197afe032642e31f6aa4215ac47f678586a

Contents?: true

Size: 964 Bytes

Versions: 2

Compression:

Stored size: 964 Bytes

Contents

module FactoryBot
  class Decorator < BasicObject
    undef_method :==

    def initialize(component)
      @component = component
    end

    if ::Gem::Version.new(::RUBY_VERSION) >= ::Gem::Version.new("2.7")
      class_eval(<<~RUBY, __FILE__, __LINE__ + 1)
          def method_missing(...) # rubocop:disable Style/MethodMissingSuper, Style/MissingRespondToMissing
          @component.send(...)
        end

        def send(...)
          __send__(...)
        end
      RUBY
    else
      def method_missing(name, *args, &block) # rubocop:disable Style/MethodMissingSuper, Style/MissingRespondToMissing
        @component.send(name, *args, &block)
      end

      def send(symbol, *args, &block)
        __send__(symbol, *args, &block)
      end
    end

    def respond_to_missing?(name, include_private = false)
      @component.respond_to?(name, true) || super
    end

    def self.const_missing(name)
      ::Object.const_get(name)
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
factory_bot-6.2.0 lib/factory_bot/decorator.rb
factory_bot-6.1.0 lib/factory_bot/decorator.rb