$stdout.sync=true
$stderr.sync=true
Always print stack trace on error instead of only if --trace option was given:
Rake.application.options.trace = true
Update 2012-04-10: More intrusive variant - enable stack trace on error but not progress messages:
module Rake
  class Application
    def standard_exception_handling
      begin
        yield
      rescue SystemExit => ex
        # Exit silently with current status
        raise
      rescue OptionParser::InvalidOption => ex
         # Exit silently
         exit(false)
      rescue Exception => ex
        # Exit with error message
        $stderr.puts "Exception: #{ex.message}"
        $stderr.puts ex.backtrace.join("\n")
        exit(false)
      end
    end
  end
end
Don't truncate rake -T output. Alternative to fiddling with environment variables:
Rake.application.terminal_columns = 999
