diff --git a/Library/Homebrew/cmd/man.rb b/Library/Homebrew/cmd/man.rb
index 36c3f3ba7cef31bd8cb85653e034dd9e748e54a7..112eff60dc6b495657ba1041d7a927ce3f45733a 100644
--- a/Library/Homebrew/cmd/man.rb
+++ b/Library/Homebrew/cmd/man.rb
@@ -32,7 +32,9 @@ module Homebrew
   def regenerate_man_pages
     Homebrew.install_gem_setup_path! "ronn"
 
-    convert_man_page("brew.1", build_man_page)
+    markup = build_man_page
+    convert_man_page(markup, TARGET_DOC_PATH/"brew.1.html")
+    convert_man_page(markup, TARGET_MAN_PATH/"brew.1")
   end
 
   def build_man_page
@@ -54,26 +56,21 @@ module Homebrew
     header + commands + footer
   end
 
-  def convert_man_page(page, contents)
-    source = SOURCE_PATH/"#{page}.md"
-    source.atomic_write(contents)
-
-    convert_with_ronn(source, TARGET_DOC_PATH/"#{page}.html")
-    convert_with_ronn(source, TARGET_MAN_PATH/page)
-  end
-
-  def convert_with_ronn(source, target)
+  def convert_man_page(markup, target)
     shared_args = %W[
       --pipe
       --organization=Homebrew
       --manual=brew
-      #{source}
     ]
 
     format_flag, format_desc = target_path_to_format(target)
 
     puts "Writing #{format_desc} to #{target}"
-    target.atomic_write Utils.popen_read("ronn", format_flag, *shared_args)
+    Utils.popen(["ronn", format_flag] + shared_args, "rb+") do |ronn|
+      ronn.write markup
+      ronn.close_write
+      target.atomic_write ronn.read
+    end
   end
 
   def target_path_to_format(target)