Class: Kotoshu::Plugins::Plugin

Inherits:
Object
  • Object
show all
Defined in:
lib/kotoshu/plugins/plugin.rb

Overview

Base class for plugins.

Plugins provide extensible functionality with dependency injection.

Examples:

Creating a plugin

class MyPlugin < Kotoshu::Plugins::Plugin
  def self.plugin_name
    :my_plugin
  end

  def self.dependencies
    [:dictionary]
  end

  def self.provides
    [:suggestions]
  end

  def initialize(dictionary:)
    @dictionary = dictionary
  end
end

Class Method Summary collapse

Instance Method Summary collapse

Class Method Details

.dependenciesArray<Symbol>

Returns Dependencies.

Returns:

  • (Array<Symbol>)

    Dependencies



34
35
36
# File 'lib/kotoshu/plugins/plugin.rb', line 34

def self.dependencies
  []
end

.plugin_nameSymbol

Returns Plugin name.

Returns:

  • (Symbol)

    Plugin name

Raises:

  • (NotImplementedError)


29
30
31
# File 'lib/kotoshu/plugins/plugin.rb', line 29

def self.plugin_name
  raise NotImplementedError, "#{name} must define .plugin_name"
end

.providesArray<Symbol>

Returns Provided services.

Returns:

  • (Array<Symbol>)

    Provided services



39
40
41
# File 'lib/kotoshu/plugins/plugin.rb', line 39

def self.provides
  []
end

Instance Method Details

#after_stopObject

Lifecycle hook called after plugin stops.

Override in subclass to add cleanup logic.



53
54
55
# File 'lib/kotoshu/plugins/plugin.rb', line 53

def after_stop
  # Override in subclass
end

#before_startObject

Lifecycle hook called before plugin starts.

Override in subclass to add startup logic.



46
47
48
# File 'lib/kotoshu/plugins/plugin.rb', line 46

def before_start
  # Override in subclass
end