Class: Ghaki::Registry::Feature

Inherits:
Object
  • Object
show all
Defined in:
lib/ghaki/registry/feature.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#nameObject

Returns the value of attribute name.



9
10
11
# File 'lib/ghaki/registry/feature.rb', line 9

def name
  @name
end

#pluginsObject

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_pluginsObject



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

Returns:

  • (Boolean)


27
28
29
# File 'lib/ghaki/registry/feature.rb', line 27

def enabled?
  @enabled
end

#enabled_plugin?(plugin_name) ⇒ Boolean

Returns:

  • (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

Returns:

  • (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

Returns:

  • (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_sObject



19
# File 'lib/ghaki/registry/feature.rb', line 19

def to_s; self.name.to_s end