class Fusuma::Plugin::Base
Create a Plugin
Class with extending this class
Public Class Methods
inherited(subclass)
click to toggle source
when inherited from subclass
Calls superclass method
# File lib/fusuma/plugin/base.rb, line 13 def self.inherited(subclass) super subclass_path = caller_locations(1..1).first.path Manager.add(plugin_class: subclass, plugin_path: subclass_path) end
plugins()
click to toggle source
get subclasses @return [Array<Class>]
# File lib/fusuma/plugin/base.rb, line 21 def self.plugins Manager.plugins[name] end
Public Instance Methods
config_index()
click to toggle source
# File lib/fusuma/plugin/base.rb, line 54 def config_index Config::Index.new(self.class.name.gsub('Fusuma::', '').underscore.split('/')) end
config_param_types()
click to toggle source
config parameter name and Type of the value of parameter @return [Hash]
# File lib/fusuma/plugin/base.rb, line 27 def config_param_types raise NotImplementedError, "override #{self.class.name}##{__method__}" end
config_params(key = nil, base: config_index)
click to toggle source
@return [Object]
# File lib/fusuma/plugin/base.rb, line 32 def config_params(key = nil, base: config_index) params = Config.search(base) || {} return params unless key @config_params ||= {} @config_params["#{base.cache_key},#{key}"] ||= params.fetch(key, nil).tap do |val| next if val.nil? # NOTE: Type checking for config.yml param_types = Array(config_param_types.fetch(key)) next if param_types.any? { |klass| val.is_a?(klass) } MultiLogger.error('Please fix config.yml.') MultiLogger.error(":#{base.keys.map(&:symbol) .join(' => :')} => :#{key} should be #{param_types.join(' OR ')}.") exit 1 end end