amoeba-rb/amoeba

View on GitHub
lib/amoeba/instance_methods.rb

Summary

Maintainability
A
35 mins
Test Coverage
# frozen_string_literal: true

module Amoeba
  module InstanceMethods
    def _parent_amoeba
      if _first_superclass_with_amoeba.respond_to?(:amoeba)
        _first_superclass_with_amoeba.amoeba
      else
        false
      end
    end

    def _first_superclass_with_amoeba
      return @_first_superclass_with_amoeba unless @_first_superclass_with_amoeba.nil?

      klass = self.class
      while klass.superclass < ::ActiveRecord::Base
        klass = klass.superclass
        break if klass.respond_to?(:amoeba) && klass.amoeba.enabled
      end
      @_first_superclass_with_amoeba = klass
    end

    def _amoeba_settings
      self.class.amoeba_block
    end

    def _parent_amoeba_settings
      if _first_superclass_with_amoeba.respond_to?(:amoeba_block)
        _first_superclass_with_amoeba.amoeba_block
      else
        false
      end
    end

    def amoeba_dup(options = {})
      ::Amoeba::Cloner.new(self, options).run
    end
  end
end