Eliminar direcciones de correo electrónico de las publicaciones importadas

Hola a todos:

Estoy configurando una instancia de Discourse para una organización que actualmente usa una lista de correo. Importamos los correos (20 000 mensajes) sin problemas mayores, pero hay muchas publicaciones donde aparecen las direcciones de correo electrónico de las personas debido a las citas, firmas de correo, etc.

Tengo un conocimiento bastante sólido de la línea de comandos de Rake/Rails, pero me cuesta averiguar cómo eliminar estas direcciones de correo. He probado varias formas de esto (con regex y sin regex), pero nunca encuentra ninguna publicación.

rake posts:remap["\<vincent@domain\.com\>","","regex"]
rake posts:remap["\\<vincent@domain\\.com\\>","","regex"]

¿Hay una mejor manera de hacerlo? Empecé con una expresión regular sencilla para encontrar mi propia dirección primero (¡y sí, tengo una copia de seguridad!).

Dado que se trata de una nueva instancia de Discourse, no me preocupa eliminar menciones con @ ni nada similar.

Gracias.

Aquí tienes un script rápido que @pfaffman escribió para nosotros. Las partes deficientes son las que yo modifiqué. Tiene algunas funciones adicionales que quizás no necesites, como una fecha de corte para que solo elimine direcciones de correo electrónico de las publicaciones anteriores a esa fecha.

Descubrí que lo mejor era reemplazar las direcciones con ‘email@removed.com’, en lugar de eliminarlas por completo. No recuerdo por qué; creo que funcionaba mejor con los corchetes circundantes.

def remove_email_addresses
  n=0 
  test_mode=false 
  dt=DateTime.new(2019, 1, 1, 0, 0, 0) 
  no_emails="email@removed." 
  Post.where("raw like '%@%'").find_each do |post| 
    sleep 0.1 
    if post.created_at < dt 
      post.raw.gsub!(/[a-z0-9+-_.]+@[a-z0-9+-]+[. ,;\\]/i,no_emails) 
      if test_mode 
        puts post.raw 
        sleep 10 
      end 
      post.save unless test_mode 
      post.rebake! unless test_mode 
      puts "saved" 
      n+=1 
      puts n.to_s 
    else 
      puts "new post, leaving as-is" 
    end 
  end 
  nil 
end

> remove_email_addresses
2 Me gusta

Excelente, gracias. Lo probaré.