# File lib/bundler/source/rubygems.rb, line 398
      def fetch_gem(spec)
        return false unless spec.remote
        uri = spec.remote.uri
        spec.fetch_platform

        download_path = Bundler.requires_sudo? ? Bundler.tmp(spec.full_name) : Bundler.rubygems.gem_dir
        gem_path = "#{Bundler.rubygems.gem_dir}/cache/#{spec.full_name}.gem"

        SharedHelpers.filesystem_access("#{download_path}/cache") do |p|
          FileUtils.mkdir_p(p)
        end
        Bundler.rubygems.download_gem(spec, uri, download_path)

        if Bundler.requires_sudo?
          SharedHelpers.filesystem_access("#{Bundler.rubygems.gem_dir}/cache") do |p|
            Bundler.mkdir_p(p)
          end
          Bundler.sudo "mv #{download_path}/cache/#{spec.full_name}.gem #{gem_path}"
        end

        gem_path
      ensure
        Bundler.rm_rf(download_path) if Bundler.requires_sudo?
      end