Module: LittlePlugger::ClassMethods

### Home Classes Methods

### In Files

- lib/little-plugger.rb

### Methods

- #disregard_plugin
- #disregard_plugins
- #initialize_plugins
- #load_plugins
- #plugin
- #plugin_module
- #plugin_names
- #plugin_path
- #plugins

### Files

- History.txt
- README.rdoc

### Class/Module Index

Quicksearch

- LittlePlugger
- LittlePlugger::ClassMethods
- Kernel

No matching classes.

# LittlePlugger::ClassMethods

### Public Instance Methods

disregard_plugin( *names ) click to toggle source

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
    def disregard_plugin( *names )
      @disregard_plugin ||= []
      @disregard_plugin.concat(names.map! {|n| n.to_sym})
      @disregard_plugin
    end

Also aliased as: disregard_plugins
disregard_plugins( *names ) click to toggle source
Alias for: disregard_plugin
initialize_plugins() click to toggle source

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
    def initialize_plugins
      plugins.each do |name, klass|
        msg = "initialize_#{name}"
        klass.send msg if klass.respond_to? msg
      end
    end

load_plugins() click to toggle source

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
    def load_plugins
      @loaded ||= {}
      found = {}

      Gem.find_files(File.join(plugin_path, '*.rb')).sort!.reverse_each do |path|
        name = File.basename(path, '.rb').to_sym
        found[name] = path unless found.key? name
      end

      :keep_on_truckin while found.map { |name, path|
        next unless plugin_names.empty? or plugin_names.include? name
        next if disregard_plugins.include? name
        next if @loaded[name]
        begin
          @loaded[name] = load path
        rescue ScriptError, StandardError => err
          warn "Error loading #{path.inspect}: #{err.message}. skipping..."
        end
      }.any?
    end

plugin( *names ) click to toggle source

Add the names to the list of plugins that will be loaded.

    # File lib/little-plugger.rb, line 125
    def plugin( *names )
      plugin_names.concat(names.map! {|n| n.to_sym})
    end

plugin_module() click to toggle source

This module or class where plugins are located.

    # File lib/little-plugger.rb, line 216
    def plugin_module
      ::LittlePlugger.default_plugin_module(plugin_path)
    end

plugin_names() click to toggle source

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
    def plugin_names
      @plugin_names ||= []
    end

plugin_path() click to toggle source

The path to search in a gem's 'lib' folder for plugins.

    # File lib/little-plugger.rb, line 210
    def plugin_path
      ::LittlePlugger.default_plugin_path(self)
    end

plugins() click to toggle source

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
    def plugins
      load_plugins
      pm = plugin_module
      names = pm.constants.map { |s| s.to_s }
      names.reject! { |n| n =~ /^[A-Z_]+$/ }

      h = {}
      names.each do |name|
        sym = ::LittlePlugger.underscore(name).to_sym
        next unless plugin_names.empty? or plugin_names.include? sym
        next if disregard_plugins.include? sym
        h[sym] = pm.const_get name
      end
      h
    end

[Validate]

Generated with the Darkfish Rdoc Generator 2.