Il problema è che un processo fork eredita alcune delle risorse del suo genitore, come i suoi descrittori di file. In particolare una di queste risorse condivise è la connessione MySQL. Quando il processo figlio termina l'invio dell'e-mail ed esce, chiude la connessione MySQL, che chiude la connessione dei processi padre.
Se continui su questo percorso (ed è irto di sottigliezze simili), allora devi fare qualcosa del genere:
# 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
Dovrai fare una cosa simile con servizi come memcached o mongodb se li usi.