Add the names to the list of plugins that will not be loaded. This list prevents the plugin system from loading unwanted or unneeded plugins.
If a plugin name appears in both the ‘disregard_plugin’ list and the ‘plugin’ list, the disregard list takes precedence; that is, the plugin will not be loaded.
# File lib/little-plugger.rb, line 137 137: def disregard_plugin( *names ) 138: @disregard_plugin ||= [] 139: @disregard_plugin.concat(names.map! {|n| n.to_sym}) 140: @disregard_plugin 141: end
Iterate over the loaded plugin classes and modules and call the initialize method for each plugin. The plugin’s initialize method is defeind as initialize_plugin_name, where the plugin name is unique to each plugin.
# File lib/little-plugger.rb, line 175 175: def initialize_plugins 176: plugins.each do |name, klass| 177: msg = "initialize_#{name}" 178: klass.send msg if klass.respond_to? msg 179: end 180: end
Iterate through all installed gems looking for those that have the plugin_path in their “lib” folder, and load all .rb files found in the gem’s plugin path. Each .rb file should define one class or module that will be used as a plugin.
# File lib/little-plugger.rb, line 187 187: def load_plugins 188: @loaded ||= {} 189: found = {} 190: 191: Gem.find_files(File.join(plugin_path, '*.rb')).each do |path| 192: name = File.basename(path, '.rb').to_sym 193: found[name] = path unless found.key? name 194: end 195: 196: :keep_on_truckin while found.map { |name, path| 197: next unless plugin_names.empty? or plugin_names.include? name 198: next if disregard_plugins.include? name 199: next if @loaded[name] 200: begin 201: @loaded[name] = load path 202: rescue ScriptError, StandardError => err 203: warn "Error loading #{path.inspect}: #{err.message}. skipping..." 204: end 205: }.any? 206: end
Add the names to the list of plugins that will be loaded.
# File lib/little-plugger.rb, line 125 125: def plugin( *names ) 126: plugin_names.concat(names.map! {|n| n.to_sym}) 127: end
This module or class where plugins are located.
# File lib/little-plugger.rb, line 216 216: def plugin_module 217: ::LittlePlugger.default_plugin_module(plugin_path) 218: end
Returns the array of plugin names that will be loaded. If the array is empty, then any plugin found in the plugin_path will be loaded.
# File lib/little-plugger.rb, line 147 147: def plugin_names 148: @plugin_names ||= [] 149: end
The path to search in a gem’s ‘lib’ folder for plugins.
# File lib/little-plugger.rb, line 210 210: def plugin_path 211: ::LittlePlugger.default_plugin_path(self) 212: end
Loads the desired plugins and returns a hash. The hash contains all the plugin classes and modules keyed by the plugin name.
# File lib/little-plugger.rb, line 154 154: def plugins 155: load_plugins 156: pm = plugin_module 157: names = pm.constants.map { |s| s.to_s } 158: names.reject! { |n| n =~ /^[A-Z_]+$/ } 159: 160: h = {} 161: names.each do |name| 162: sym = ::LittlePlugger.underscore(name).to_sym 163: next unless plugin_names.empty? or plugin_names.include? sym 164: next if disregard_plugins.include? sym 165: h[sym] = pm.const_get name 166: end 167: h 168: end
Disabled; run with --debug to generate this.
Generated with the Darkfish Rdoc Generator 1.1.6.