Class: Spina::Plugin
- Inherits:
-
Object
- Object
- Spina::Plugin
- Defined in:
- lib/spina/plugin.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#namespace ⇒ Object
Returns the value of attribute namespace.
-
#settings ⇒ Object
Returns the value of attribute settings.
Class Method Summary collapse
Instance Method Summary collapse
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
3 4 5 |
# File 'lib/spina/plugin.rb', line 3 def name @name end |
#namespace ⇒ Object
Returns the value of attribute namespace.
3 4 5 |
# File 'lib/spina/plugin.rb', line 3 def namespace @namespace end |
#settings ⇒ Object
Returns the value of attribute settings.
3 4 5 |
# File 'lib/spina/plugin.rb', line 3 def settings @settings end |
Class Method Details
.all ⇒ Object
46 47 48 |
# File 'lib/spina/plugin.rb', line 46 def all ::Spina::PLUGINS end |
.find_by(opts = {}) ⇒ Object
50 51 52 53 54 55 56 57 58 |
# File 'lib/spina/plugin.rb', line 50 def find_by(opts = {}) all.find do |plugin| matches = true opts.each do |key, value| matches = false unless plugin.send(key) == value end plugin if matches end end |
.register {|plugin| ... } ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 |
# File 'lib/spina/plugin.rb', line 60 def register plugin = new yield plugin raise "Missing plugin name" if plugin.name.nil? raise "Missing plugin namespace" if plugin.namespace.nil? if plugin.settings.present? plugin.create_setting_class! end all << plugin plugin end |
Instance Method Details
#create_setting_class! ⇒ Object
5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
# File 'lib/spina/plugin.rb', line 5 def create_setting_class! class_settings = data_mapped_settings_hash plugin_name = namespace klass = Class.new(::Spina::Setting) do include AttrJson::Record include Spina::AttrJsonMonkeypatch class_settings.each do |setting| attr_json(*setting, container_attribute: "preferences") attr_json_setter_monkeypatch setting.first end default_scope { where(plugin: plugin_name.to_s) } end "Spina::#{namespace_class}".constantize.const_set :Setting, klass end |