問題は、フォークされたプロセスが、ファイル記述子などの親のリソースの一部を継承することです。特に、そのような共有リソースの1つはMySQL接続です。子プロセスが電子メールの送信を終了して終了すると、MySQL接続が閉じられ、親プロセスの接続が閉じられます。
この道を進み続ける場合(そしてそれが同様の微妙な点で争われている場合)、次のようなことをする必要があります:
# 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
memcachedやmongodbなどのサービスを使用する場合は、これらのサービスでも同様のことを行う必要があります。