Sha256: e01ae7d51238144b9f9b5d5b2b35927ebcf92dab435e0838d279816534994732

Contents?: true

Size: 1.09 KB

Versions: 62

Compression:

Stored size: 1.09 KB

Contents

module Avo
  class PluginManager
    attr_reader :plugins

    alias_method :all, :plugins

    def initialize
      @plugins = []
    end

    def register(plugin_klass, priority: 10)
      @plugins << OpenStruct.new(klass: plugin_klass, priority: priority)
    end

    def boot_plugins
      Avo.plugin_manager.all.sort_by(&:priority).each do |plugin|
        plugin.klass.boot
      end
    end

    def init_plugins
      Avo.plugin_manager.all.sort_by(&:priority).each do |plugin|
        plugin.klass.init
      end
    end

    def register_field(method_name, klass)
      Avo.field_manager.load_field method_name, klass
    end

    def register_resource_tool
    end

    def register_tool
    end

    def as_json(*arg)
      plugins.map do |plugin|
        {
          klass: plugin.klass.to_s,
          priority: plugin.priority,
        }
      end
    end

    def installed?(name)
      plugins.any? do |plugin|
        plugin.klass.to_s.chomp("::Plugin").underscore.tr("/", "-") == name.to_s
      end
    end
  end

  def self.plugin_manager
    @plugin_manager ||= PluginManager.new
  end
end

Version data entries

62 entries across 62 versions & 1 rubygems

Version Path
avo-3.4.4 lib/avo/plugin_manager.rb
avo-3.4.3 lib/avo/plugin_manager.rb
avo-3.4.2 lib/avo/plugin_manager.rb
avo-3.4.1 lib/avo/plugin_manager.rb
avo-3.4.0 lib/avo/plugin_manager.rb
avo-3.3.6 lib/avo/plugin_manager.rb
avo-3.3.5 lib/avo/plugin_manager.rb
avo-3.3.4 lib/avo/plugin_manager.rb
avo-3.3.3 lib/avo/plugin_manager.rb
avo-3.3.2 lib/avo/plugin_manager.rb
avo-3.3.1 lib/avo/plugin_manager.rb
avo-3.3.0 lib/avo/plugin_manager.rb
avo-3.2.3 lib/avo/plugin_manager.rb
avo-3.0.1.beta23 lib/avo/plugin_manager.rb
avo-3.0.1.beta20 lib/avo/plugin_manager.rb
avo-3.0.1.beta21 lib/avo/plugin_manager.rb
avo-3.0.1.beta17 lib/avo/plugin_manager.rb
avo-3.0.1.beta22 lib/avo/plugin_manager.rb
avo-3.0.1.beta18 lib/avo/plugin_manager.rb
avo-3.0.1.beta19 lib/avo/plugin_manager.rb