Class: Avo::PluginManager
- Inherits:
-
Object
- Object
- Avo::PluginManager
- Defined in:
- lib/avo/plugin_manager.rb
Instance Attribute Summary collapse
-
#engines ⇒ Object
Returns the value of attribute engines.
-
#plugins ⇒ Object
(also: #all)
readonly
Returns the value of attribute plugins.
Instance Method Summary collapse
- #as_json(*arg) ⇒ Object
-
#initialize ⇒ PluginManager
constructor
A new instance of PluginManager.
- #installed?(name) ⇒ Boolean
- #mount_engine(klass, **options) ⇒ Object
- #register(name, priority: 10) ⇒ Object
- #register_field(method_name, klass) ⇒ Object
- #register_resource_tool ⇒ Object
- #register_tool ⇒ Object
- #register_view_type(name, component:, icon:, active_icon:, translation_key: nil) ⇒ Object
- #reset ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize ⇒ PluginManager
Returns a new instance of PluginManager.
8 9 10 11 |
# File 'lib/avo/plugin_manager.rb', line 8 def initialize @plugins = [] @engines = [] end |
Instance Attribute Details
#engines ⇒ Object
Returns the value of attribute engines.
4 5 6 |
# File 'lib/avo/plugin_manager.rb', line 4 def engines @engines end |
#plugins ⇒ Object (readonly) Also known as: all
Returns the value of attribute plugins.
3 4 5 |
# File 'lib/avo/plugin_manager.rb', line 3 def plugins @plugins end |
Instance Method Details
#as_json(*arg) ⇒ Object
42 43 44 45 46 47 48 49 |
# File 'lib/avo/plugin_manager.rb', line 42 def as_json(*arg) plugins.map do |plugin| { klass: plugin.to_s, priority: plugin.priority, } end end |
#installed?(name) ⇒ Boolean
59 60 61 62 63 |
# File 'lib/avo/plugin_manager.rb', line 59 def installed?(name) plugins.any? do |plugin| plugin.name.to_s == name.to_s end end |
#mount_engine(klass, **options) ⇒ Object
65 66 67 |
# File 'lib/avo/plugin_manager.rb', line 65 def mount_engine(klass, **) @engines << {klass:, options:} end |
#register(name, priority: 10) ⇒ Object
18 19 20 |
# File 'lib/avo/plugin_manager.rb', line 18 def register(name, priority: 10) @plugins << Plugin.new(name:, priority: priority) end |
#register_field(method_name, klass) ⇒ Object
26 27 28 29 30 31 32 33 34 |
# File 'lib/avo/plugin_manager.rb', line 26 def register_field(method_name, klass) # Avo.boot method is executed multiple times. # During the first run, it correctly loads descendants of Avo::Fields::Base. # Plugins are then loaded, introducing additional descendants to Avo::Fields::Base. # On subsequent runs, Avo::Fields::Base descendants now include these plugin fields. # This field_name_attribute assign forces the field name to retain the registered name instead of being computed dynamically from the field class. klass.field_name_attribute = method_name Avo.field_manager.load_field method_name, klass end |
#register_resource_tool ⇒ Object
36 37 |
# File 'lib/avo/plugin_manager.rb', line 36 def register_resource_tool end |
#register_tool ⇒ Object
39 40 |
# File 'lib/avo/plugin_manager.rb', line 39 def register_tool end |
#register_view_type(name, component:, icon:, active_icon:, translation_key: nil) ⇒ Object
22 23 24 |
# File 'lib/avo/plugin_manager.rb', line 22 def register_view_type(name, component:, icon:, active_icon:, translation_key: nil) Avo.view_type_manager.register(name, component:, icon:, active_icon:, translation_key:) end |
#reset ⇒ Object
13 14 15 16 |
# File 'lib/avo/plugin_manager.rb', line 13 def reset @plugins = [] @engines = [] end |
#to_s ⇒ Object
51 52 53 54 55 56 57 |
# File 'lib/avo/plugin_manager.rb', line 51 def to_s plugins.map do |plugin| plugin.to_s end.join(",") rescue "Failed to fetch plugins." end |