# File lib/fpm/source/gem.rb, line 73
  def get_metadata
    File.open(@paths.first, 'r') do |f|
      ::Gem::Package.open(f, 'r') do |gem|
        spec = gem.metadata
        %w(
          description
          license
          summary
          version
        ).each do |field|
          self[field.to_sym] = spec.send(field) rescue "unknown"
        end

        if self[:settings][:package_prefix]
          self[:package_prefix] = self[:settings][:package_prefix]
        else
          self[:package_prefix] = "rubygem"
        end
        self[:name] = "#{self[:package_prefix]}#{self[:suffix]}-#{spec.name}"
        self[:maintainer] = spec.author
        self[:url] = spec.homepage

        # TODO [Jay]: this will be different for different
        # package managers.  Need to decide how to handle this.
        self[:category] = 'Languages/Development/Ruby'

        # if the gemspec has extensions defined, then this should be a 'native' arch.
        if !spec.extensions.empty?
          self[:architecture] = "native"
        else
          self[:architecture] = "all"
        end

        # make sure we have a description
        descriptions = [ self[:description], self[:summary], "#{spec.name} - no description given" ]
        self[:description] = descriptions.detect { |d| !(d.nil? or d.strip.empty?) }

        self[:dependencies] = []
        spec.runtime_dependencies.map do |dep|
          # rubygems 1.3.5 doesn't have 'Gem::Dependency#requirement'
          if dep.respond_to?(:requirement)
            reqs = dep.requirement.to_s.gsub(/,/, '')
          else
            reqs = dep.version_requirements
          end

          # Some reqs can be ">= a, < b" versions, let's handle that.
          reqs.to_s.split(/, */).each do |req|
            self[:dependencies] << "#{self[:package_prefix]}#{self[:suffix]}-#{dep.name} #{req}"
          end
        end # runtime_dependencies
      end # ::Gem::Package
    end # File.open (the gem)
  end