Voici donc la fonction :

def editText(demande, default="")
	# Crée le fichier temporaire
	file = Tempfile.open('txt')

	# Crée le message
	file.puts default
	file.puts
	file.puts "# "+demande
	file.puts "# Les lignes commencent par # sont ignorées"
	file.close

	# Propose l'éditeur de texte (ici nano)
	system "nano", file.path

	# Récupère le texte
	texte = ""
	file.open
	file.each do |l|
		if l.chomp.length == 0 or l.chomp[0] != "#"[0]
			texte += l
		end
	end
	file.close!

	texte.strip
end

Cette fonction peut par exemple s'appeler comme ça :

str = editText(str)