10/03/09 18:23:10 +mVhS0Hu
>>5 のpoormans_cron使ってみてるんですが、プラグインの質問と言うか、
こんなもんなの?という疑問があり質問させてください。
poormans_cronではアクセスごとにThread.start で別スレッド立てて、
登録してある情報をもとに定期ジョブをこなす仕組みなのですが、
登録してあるジョブ内で、トランザクションのブロック中でActiveRecordを使うと、
ジョブは走るものの、ActiveRecordでのupdateが全然反映されないため、
ログを見ると、データの更新直後に
Mysql::Error: MySQL server has gone away: ROLLBACK
などとあり、ロールバックされているようなのです。
ちなみにトランザクションを使わないと、データを複数更新する際にも最初の1つしか更新されなかったりと
途中で処理が終わったかのようになります。
つまりロールバックも処理が完了しなかったため起きたように見えます。
これもしかして、Thread.start 内でDBつかってもメインスレッドが終了したら、
poormans_cronで新規に立てられたスレッドも終了してしまうとか、そういうことってありますか?
環境はRails 2.3.5, Ruby 1.8.7です