Sha256: f8a8232979721cff0f9ba1654e5452dc15bf4491897391dae66d3529423a72ab
Contents?: true
Size: 1.21 KB
Versions: 13
Compression:
Stored size: 1.21 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::App.fields.load_field method_name, klass end def register_resource_tool # puts ["register_resource_tool->"].inspect end def register_tool # puts ["register_tool->"].inspect 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.split("::").first.underscore == name.to_s || plugin.klass.to_s.split("::").first == name.to_s end end end def self.plugin_manager @plugin_manager ||= PluginManager.new end end
Version data entries
13 entries across 13 versions & 1 rubygems