Sha256: 43c44045553411bafc4f75765b3299df4c94ad887f9e03cb04697b24a71013c6

Contents?: true

Size: 1.93 KB

Versions: 15

Compression:

Stored size: 1.93 KB

Contents

module Nucleon
module Gems
  
  #-----------------------------------------------------------------------------
  
  @@core = nil
  @@gems = {}
  
  #-----------------------------------------------------------------------------
  # Gem interface
  
  def self.logger
    Core.logger
  end
  
  #---
    
  def self.core
    @@core
  end
  
  #---
  
  def self.registered
    @@gems
  end
  
  #---
  
  def self.register(reset = false)
    if reset || Util::Data.empty?(@@gems)
      logger.info("Registering external gem defined Nucleon plugins at #{Time.now}")
      
      if defined?(Gem) 
        if ! defined?(Bundler) && Gem::Specification.respond_to?(:latest_specs)
          logger.debug("Not using bundler")
          Gem::Specification.latest_specs(true).each do |spec|
            register_gem(spec)
          end
        else
          logger.debug("Using bundler or Gem specification without latest_specs")
          Gem.loaded_specs.each do |name, spec|
            register_gem(spec)
          end     
        end
      end
    end
    @@gems
  end
  
  #---
  
  def self.register_gem(spec)
    name      = spec.name.to_sym
    base_path = File.join(spec.full_gem_path, 'lib')
    
    if name == :nucleon
      logger.debug("Setting Nucleon core gemspec")
      @@core       = spec      
      @@gems[name] = { 
        :spec       => spec, 
        :base_path  => base_path, 
        :namespaces => [ :nucleon ] 
      } 
    else
      Manager.connection.register(base_path) do |data|
        namespace   = data[:namespace]
        plugin_path = data[:directory]
      
        logger.info("Registering gem #{name} at #{plugin_path} at #{Time.now}") unless @@gems.has_key?(name)
      
        @@gems[name] = { 
          :spec       => spec, 
          :base_path  => base_path, 
          :namespaces => [] 
        }
        @@gems[name][:namespaces] << namespace unless @@gems[name][:namespaces].include?(namespace)
      end
    end
  end
end
end

Version data entries

15 entries across 15 versions & 1 rubygems

Version Path
nucleon-0.1.17 lib/core/gems.rb
nucleon-0.1.16 lib/core/gems.rb
nucleon-0.1.15 lib/core/gems.rb
nucleon-0.1.14 lib/core/gems.rb
nucleon-0.1.13 lib/core/gems.rb
nucleon-0.1.12 lib/core/gems.rb
nucleon-0.1.11 lib/core/gems.rb
nucleon-0.1.10 lib/core/gems.rb
nucleon-0.1.9 lib/core/gems.rb
nucleon-0.1.8 lib/core/gems.rb
nucleon-0.1.7 lib/core/gems.rb
nucleon-0.1.6 lib/core/gems.rb
nucleon-0.1.5 lib/core/gems.rb
nucleon-0.1.4 lib/core/gems.rb
nucleon-0.1.3 lib/core/gems.rb