class Gem::Indexer

def map_gems_to_specs gems

def map_gems_to_specs gems
  gems.map { |gemfile|
    if File.size(gemfile) == 0 then
      alert_warning "Skipping zero-length gem: #{gemfile}"
      next
    end
    begin
      spec = Gem::Package.new(gemfile).spec
      spec.loaded_from = gemfile
      spec.abbreviate
      spec.sanitize
      spec
    rescue SignalException
      alert_error "Received signal, exiting"
      raise
    rescue Exception => e
      msg = ["Unable to process #{gemfile}",
             "#{e.message} (#{e.class})",
             "\t#{e.backtrace.join "\n\t"}"].join("\n")
      alert_error msg
    end
  }.compact
end