Class: Ghaki::Registry::Feature
- Inherits:
-
Object
- Object
- Ghaki::Registry::Feature
- Defined in:
- lib/ghaki/registry/feature.rb
Instance Attribute Summary collapse
-
#name ⇒ Object
Returns the value of attribute name.
-
#plugins ⇒ Object
Returns the value of attribute plugins.
Instance Method Summary collapse
- #add_plugin(plugin_name, plugin_class) ⇒ Object
- #assert_enabled! ⇒ Object
- #assert_plugin!(plugin_name) ⇒ Object
- #clear_plugins ⇒ Object
- #disable(val = true) ⇒ Object
- #disable_plugin(plugin_name) ⇒ Object
- #enable(val = true) ⇒ Object
- #enable_plugin(plugin_name) ⇒ Object
- #enabled? ⇒ Boolean
- #enabled_plugin?(plugin_name) ⇒ Boolean
- #factory_create(plugin_name, *args) ⇒ Object
- #failed_plugin?(plugin_name) ⇒ Boolean
- #get_plugin(plugin_name) ⇒ Object
- #has_plugin?(plugin_name) ⇒ Boolean
-
#initialize(_name) ⇒ Feature
constructor
A new instance of Feature.
- #load_plugin(plugin_name, lib_path) ⇒ Object
- #plugin_failure(plugin_name) ⇒ Object
- #remove_plugin(plugin_name) ⇒ Object
- #to_s ⇒ Object
Constructor Details
#initialize(_name) ⇒ Feature
Returns a new instance of Feature.
12 13 14 15 16 |
# File 'lib/ghaki/registry/feature.rb', line 12 def initialize _name @name = _name @enabled = true @plugins = {} end |
Instance Attribute Details
#name ⇒ Object
Returns the value of attribute name.
9 10 11 |
# File 'lib/ghaki/registry/feature.rb', line 9 def name @name end |
#plugins ⇒ Object
Returns the value of attribute plugins.
9 10 11 |
# File 'lib/ghaki/registry/feature.rb', line 9 def plugins @plugins end |
Instance Method Details
#add_plugin(plugin_name, plugin_class) ⇒ Object
41 42 43 |
# File 'lib/ghaki/registry/feature.rb', line 41 def add_plugin plugin_name, plugin_class @plugins[plugin_name] = Ghaki::Registry::Service.new( self, plugin_name, plugin_class ) end |
#assert_enabled! ⇒ Object
36 37 38 |
# File 'lib/ghaki/registry/feature.rb', line 36 def assert_enabled! raise FeatureDisabledError.new( self.name ) unless self.enabled? end |
#assert_plugin!(plugin_name) ⇒ Object
57 58 59 |
# File 'lib/ghaki/registry/feature.rb', line 57 def assert_plugin! plugin_name raise PluginNotFoundError.new( self.name, plugin_name ) unless has_plugin? plugin_name end |
#clear_plugins ⇒ Object
22 23 24 |
# File 'lib/ghaki/registry/feature.rb', line 22 def clear_plugins @plugins = {} end |
#disable(val = true) ⇒ Object
33 34 35 |
# File 'lib/ghaki/registry/feature.rb', line 33 def disable val=true self.enable !val end |
#disable_plugin(plugin_name) ⇒ Object
78 79 80 |
# File 'lib/ghaki/registry/feature.rb', line 78 def disable_plugin plugin_name get_plugin(plugin_name).disable end |
#enable(val = true) ⇒ Object
30 31 32 |
# File 'lib/ghaki/registry/feature.rb', line 30 def enable val=true @enabled = val end |
#enable_plugin(plugin_name) ⇒ Object
81 82 83 |
# File 'lib/ghaki/registry/feature.rb', line 81 def enable_plugin plugin_name get_plugin(plugin_name).enable end |
#enabled? ⇒ Boolean
27 28 29 |
# File 'lib/ghaki/registry/feature.rb', line 27 def enabled? @enabled end |
#enabled_plugin?(plugin_name) ⇒ Boolean
75 76 77 |
# File 'lib/ghaki/registry/feature.rb', line 75 def enabled_plugin? plugin_name get_plugin(plugin_name).enabled? end |
#factory_create(plugin_name, *args) ⇒ Object
72 73 74 |
# File 'lib/ghaki/registry/feature.rb', line 72 def factory_create plugin_name, *args get_plugin(plugin_name).create(*args) end |
#failed_plugin?(plugin_name) ⇒ Boolean
86 87 88 |
# File 'lib/ghaki/registry/feature.rb', line 86 def failed_plugin? plugin_name get_plugin(plugin_name).failed? end |
#get_plugin(plugin_name) ⇒ Object
60 61 62 63 |
# File 'lib/ghaki/registry/feature.rb', line 60 def get_plugin plugin_name assert_plugin! plugin_name @plugins[plugin_name] end |
#has_plugin?(plugin_name) ⇒ Boolean
67 68 69 |
# File 'lib/ghaki/registry/feature.rb', line 67 def has_plugin? plugin_name @plugins.has_key? plugin_name end |
#load_plugin(plugin_name, lib_path) ⇒ Object
46 47 48 49 50 51 52 53 54 |
# File 'lib/ghaki/registry/feature.rb', line 46 def load_plugin plugin_name, lib_path begin require lib_path rescue Exception => e @plugins[plugin_name] = Ghaki::Registry::Service.new( self, plugin_name, nil ) @plugins[plugin_name].failure = Ghaki::PluginLoadingError.new( self.name, plugin_name, lib_path, e) nil end end |
#plugin_failure(plugin_name) ⇒ Object
89 90 91 |
# File 'lib/ghaki/registry/feature.rb', line 89 def plugin_failure plugin_name get_plugin(plugin_name).failure end |
#remove_plugin(plugin_name) ⇒ Object
64 65 66 |
# File 'lib/ghaki/registry/feature.rb', line 64 def remove_plugin plugin_name @plugins.delete plugin_name end |
#to_s ⇒ Object
19 |
# File 'lib/ghaki/registry/feature.rb', line 19 def to_s; self.name.to_s end |