Sha256: 566c6cb7ee874bc296c87baa3eb8ef7b9dfe9675f273695694ae299389c2fa14
Contents?: true
Size: 1.13 KB
Versions: 4
Compression:
Stored size: 1.13 KB
Contents
# frozen_string_literal: true module Aid class PluginManager def plugins @plugins ||= load_plugins end def activate_plugins plugins.each do |_, plugin| plugin.activate! end end private def load_plugins plugins = {} locate_plugins.each do |plugin| plugins[plugin.name] ||= plugin end plugins end AID_PLUGIN_PREFIX = 'aid-' def locate_plugins plugins = [] gem_list.each do |gem_object| next unless gem_object.name.start_with?(AID_PLUGIN_PREFIX) plugins << Plugin.new(gem_object) end plugins end def gem_list Gem.refresh return Gem::Specification if Gem::Specification.respond_to?(:each) Gem.source_index.find_name('') end class Plugin attr_reader :name def initialize(gem_object) @name = gem_object.name.split('-', 2).last @gem = gem_object end def activate! require @gem.name rescue LoadError => e warn "Found plugin #{@gem.name}, but could not require '#{@gem.name}'" warn e end end end end
Version data entries
4 entries across 4 versions & 2 rubygems
Version | Path |
---|---|
aid-0.2.2 | lib/aid/plugins.rb |
abtion-aid-0.3.2 | lib/aid/plugins.rb |
abtion-aid-0.3.1 | lib/aid/plugins.rb |
abtion-aid-0.2.0 | lib/aid/plugins.rb |