execute (Gem::Commands::LockCommand)

    # File lib/rubygems/commands/lock_command.rb, line 69
      def execute
        say "require 'rubygems'"

        locked = {}

        pending = options[:args]

        until pending.empty? do
          full_name = pending.shift

          spec = Gem::SourceIndex.load_specification spec_path(full_name)

          if spec.nil? then
            complain "Could not find gem #{full_name}, try using the full name"
            next
          end

          say "gem '#{spec.name}', '= #{spec.version}'" unless locked[spec.name]
          locked[spec.name] = true

          spec.runtime_dependencies.each do |dep|
            next if locked[dep.name]
            candidates = Gem.source_index.search dep

            if candidates.empty? then
              complain "Unable to satisfy '#{dep}' from currently installed gems"
            else
              pending << candidates.last.full_name
            end
          end
        end
      end