module Nucleon::Gems
Public Class Methods
core()
click to toggle source
# File lib/core/gems.rb 20 def self.core 21 @@core 22 end
each_gem(&block)
click to toggle source
# File lib/core/gems.rb 99 def self.each_gem(&block) 100 if defined?(Gem) 101 if ! defined?(Bundler) && Gem::Specification.respond_to?(:latest_specs) 102 logger.debug("Not using bundler") 103 Gem::Specification.latest_specs(true).each do |spec| 104 block.call(spec) 105 end 106 else 107 logger.debug("Using bundler or Gem specification without latest_specs") 108 Gem.loaded_specs.each do |name, spec| 109 block.call(spec) 110 end 111 end 112 end 113 end
exist?(*names)
click to toggle source
# File lib/core/gems.rb 117 def self.exist?(*names) 118 checks = Hash[names.map{|name| [ name.to_s, true ] }] 119 each_gem do |spec| 120 checks.delete(spec.name.to_s) 121 end 122 checks.empty? ? true : false 123 end
gateway(name)
click to toggle source
# File lib/core/gems.rb 26 def self.gateway(name) 27 unless @@gateways.include?(name.to_s) 28 @@gateways << name.to_s 29 end 30 end
logger()
click to toggle source
# File lib/core/gems.rb 14 def self.logger 15 Core.logger 16 end
register(reset = false, loaded = [])
click to toggle source
# File lib/core/gems.rb 40 def self.register(reset = false, loaded = []) 41 if reset || Util::Data.empty?(@@gems) 42 logger.info("Registering external gem defined Nucleon plugins at #{Time.now}") 43 44 each_gem do |spec| 45 register_gem(spec, loaded) 46 end 47 end 48 @@gems 49 end
register_gem(spec, loaded = [])
click to toggle source
# File lib/core/gems.rb 53 def self.register_gem(spec, loaded = []) 54 name = spec.name.to_sym 55 base_path = File.join(spec.full_gem_path, 'lib') 56 loaded = loaded.collect {|item| item.to_sym } 57 58 if name == :nucleon 59 logger.debug("Setting Nucleon core gemspec") 60 @@core = spec 61 @@gems[name] = { 62 :spec => spec, 63 :base_path => base_path, 64 :namespaces => [ :nucleon ] 65 } 66 else 67 Manager.connection.register(base_path) do |data| 68 namespace = data[:namespace] 69 plugin_path = data[:directory] 70 71 unless @@gems.has_key?(name) 72 logger.info("Registering gem #{name} at #{plugin_path} at #{Time.now}") 73 74 unless @@gateways.include?(name.to_s) || loaded.include?(name) 75 base_loader = File.join(base_path, "#{name}_base.rb") 76 loader = File.join(base_path, "#{name}.rb") 77 78 if File.exists?(base_loader) 79 require base_loader 80 elsif File.exists?(loader) 81 require loader 82 end 83 end 84 end 85 86 @@gems[name] = { 87 :spec => spec, 88 :base_path => base_path, 89 :namespaces => [] 90 } 91 @@gems[name][:namespaces] << namespace unless @@gems[name][:namespaces].include?(namespace) 92 end 93 end 94 end
registered()
click to toggle source
# File lib/core/gems.rb 34 def self.registered 35 @@gems 36 end
spec(name)
click to toggle source
# File lib/core/gems.rb 141 def self.spec(name) 142 results = specs(name) 143 return results[0] unless results.empty? 144 nil 145 end
specs(*names)
click to toggle source
# File lib/core/gems.rb 127 def self.specs(*names) 128 checks = Hash[names.map{|name| [ name.to_s, true ] }] 129 specs = [] 130 131 each_gem do |spec| 132 if checks.has_key?(spec.name.to_s) 133 specs << spec 134 end 135 end 136 specs 137 end