module Nuggets::Pluggable
Attributes
plugin_filename[W]
Public Class Methods
load_plugins_for(*klasses)
click to toggle source
# File lib/nuggets/pluggable.rb 32 def self.load_plugins_for(*klasses) 33 klasses.map { |klass| klass.extend(self).load_plugins } 34 end
Public Instance Methods
load_plugins(name = plugin_filename)
click to toggle source
# File lib/nuggets/pluggable.rb 36 def load_plugins(name = plugin_filename) 37 load_path_plugins(name) 38 load_gem_plugins(name) 39 load_env_plugins(name) 40 41 loaded_plugins.to_a 42 end
loaded_plugins()
click to toggle source
# File lib/nuggets/pluggable.rb 44 def loaded_plugins 45 @loaded_plugins ||= Set.new 46 end
plugin_filename()
click to toggle source
# File lib/nuggets/pluggable.rb 48 def plugin_filename 49 @plugin_filename ||= "#{name. 50 gsub(/([A-Z]+)([A-Z][a-z])/, '\1_\2'). 51 gsub(/([a-z\d])([A-Z])/, '\1_\2'). 52 gsub(/::/, '/').tr('-', '_').downcase}_plugin.rb" 53 end
Private Instance Methods
load_env_plugins(name)
click to toggle source
# File lib/nuggets/pluggable.rb 72 def load_env_plugins(name) 73 path = ::ENV["#{name.chomp(ext = ::File.extname(name)).upcase}_PATH"] 74 path.split(::File::PATH_SEPARATOR).each { |dir| 75 load_plugin_files(::Dir["#{dir}/*#{ext}"]) 76 } if path 77 end
load_gem_plugins(name)
click to toggle source
# File lib/nuggets/pluggable.rb 66 def load_gem_plugins(name) 67 ::Gem::Specification.latest_specs.each { |spec| 68 load_plugin_files(spec.matches_for_glob(name)) 69 } if ::Object.const_defined?(:Gem) 70 end
load_path_plugins(name)
click to toggle source
# File lib/nuggets/pluggable.rb 59 def load_path_plugins(name) 60 $LOAD_PATH.dup.each { |path| 61 plugin = ::File.expand_path(name, path) 62 load_plugin_file(plugin) if ::File.file?(plugin) 63 } 64 end
load_plugin_file(plugin)
click to toggle source
# File lib/nuggets/pluggable.rb 79 def load_plugin_file(plugin) 80 load plugin if loaded_plugins.add?(plugin) 81 rescue ::Exception => err 82 raise unless loaded_plugins.delete?(plugin) 83 warn "Error loading #{name} plugin: #{plugin}: #{err} (#{err.class})" 84 end
load_plugin_files(plugins)
click to toggle source
# File lib/nuggets/pluggable.rb 86 def load_plugin_files(plugins) 87 plugins.each { |plugin| load_plugin_file(::File.expand_path(plugin)) } 88 end