execute (Gem::Commands::SpecificationCommand)

    # File lib/rubygems/commands/specification_command.rb, line 57
      def execute
        specs = []
        gem = options[:args].shift

        unless gem then
          raise Gem::CommandLineError,
                "Please specify a gem name or file on the command line"
        end

        dep = Gem::Dependency.new gem, options[:version]

        field = get_one_optional_argument

        if field then
          field = field.intern

          if options[:format] == :ruby then
            raise Gem::CommandLineError, "--ruby and FIELD are mutually exclusive"
          end

          unless Gem::Specification.attribute_names.include? field then
            raise Gem::CommandLineError,
                  "no field %p on Gem::Specification" % field.to_s
          end
        end

        if local? then
          if File.exist? gem then
            specs << Gem::Format.from_file_by_path(gem).spec rescue nil
          end

          if specs.empty? then
            specs.push(*Gem.source_index.search(dep))
          end
        end

        if remote? then
          found = Gem::SpecFetcher.fetcher.fetch dep

          specs.push(*found.map { |spec,| spec })
        end

        if specs.empty? then
          alert_error "Unknown gem '#{gem}'"
          terminate_interaction 1
        end

        output = lambda do |s|
          s = s.send field if field

          say case options[:format]
              when :ruby then s.to_ruby
              when :marshal then Marshal.dump s
              else s.to_yaml
              end

          say "\n"
        end

        if options[:all] then
          specs.each(&output)
        else
          spec = specs.sort_by { |s| s.version }.last
          output[spec]
        end
      end