El problema es que un proceso bifurcado hereda algunos de los recursos de su padre, como sus descriptores de archivo. En particular, uno de esos recursos compartidos es la conexión MySQL. Cuando el proceso secundario finaliza el envío de su correo electrónico y sale, cierra la conexión de MySQL, lo que cierra la conexión de los procesos principales.
Si continúa por este camino (y está plagado de sutilezas similares), entonces debe hacer algo como esto:
# Clear existing connections before forking to ensure they do not get inherited.
::ActiveRecord::Base.clear_all_connections!
fork do
# Establish a new connection for each fork.
::ActiveRecord::Base.establish_connection
# The rest of the code for each fork...
end
Tendrá que hacer algo similar con servicios como memcached o mongodb si los usa.