Sha256: d8219f45cb9989f2adaeeccac44f7a02ceea7c3a2f829db2b7b56e35339cb8c7

Contents?: true

Size: 681 Bytes

Versions: 23

Compression:

Stored size: 681 Bytes

Contents

# frozen_string_literal: true

module Praxis
  module PluginConcern
    extend ::ActiveSupport::Concern

    included do
      @setup = false
    end

    module ClassMethods
      PLUGIN_CLASSES = %i[
        Request
        Controller
        EndpointDefinition
        ActionDefinition
        Response
        ApiGeneralInfo
      ].freeze

      def setup!
        return if @setup

        PLUGIN_CLASSES.each do |name|
          inject!(name) if constants.include?(name)
        end

        @setup = true
      end

      def inject!(name)
        plugin = const_get(name)
        praxis = Praxis.const_get(name)

        praxis.include(plugin)
      end
    end
  end
end

Version data entries

23 entries across 23 versions & 1 rubygems

Version Path
praxis-2.0.0 lib/praxis/plugin_concern.rb
praxis-2.0.pre.40 lib/praxis/plugin_concern.rb
praxis-2.0.pre.39 lib/praxis/plugin_concern.rb
praxis-2.0.pre.38 lib/praxis/plugin_concern.rb
praxis-2.0.pre.37 lib/praxis/plugin_concern.rb
praxis-2.0.pre.36 lib/praxis/plugin_concern.rb
praxis-2.0.pre.35 lib/praxis/plugin_concern.rb
praxis-2.0.pre.34 lib/praxis/plugin_concern.rb
praxis-2.0.pre.33 lib/praxis/plugin_concern.rb
praxis-2.0.pre.32 lib/praxis/plugin_concern.rb
praxis-2.0.pre.31 lib/praxis/plugin_concern.rb
praxis-2.0.pre.30 lib/praxis/plugin_concern.rb
praxis-2.0.pre.29 lib/praxis/plugin_concern.rb
praxis-2.0.pre.28 lib/praxis/plugin_concern.rb
praxis-2.0.pre.27 lib/praxis/plugin_concern.rb
praxis-2.0.pre.26 lib/praxis/plugin_concern.rb
praxis-2.0.pre.25 lib/praxis/plugin_concern.rb
praxis-2.0.pre.24 lib/praxis/plugin_concern.rb
praxis-2.0.pre.23 lib/praxis/plugin_concern.rb
praxis-2.0.pre.22 lib/praxis/plugin_concern.rb