Problemet är att en splittrad process ärver en del av sina förälders resurser, till exempel dess filbeskrivningar. I synnerhet en sådan delad resurs är MySQL-anslutningen. När den underordnade processen avslutar sin e-postsändning och avslutar den stänger den MySQL-anslutningen, vilket stänger den överordnade processanslutningen.
Om du fortsätter på den här vägen (och den är fylld av liknande finesser) måste du göra något så här:
# 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
Du måste göra liknande saker med tjänster som memcached eller mongodb om du använder dem.