ruby今まで何回かContinuationネタで使ったことがあるActiveRecord用の「途中でコミットできるトランザクション」をrailsプラグインにしてみた。なんか、意外と自分で実用することが判明してきたので。ActiveRecord::Base.transactionを拡張して、途中で「ここまで保存」する機能を提供する。partially_commitable_transaction.tar.gz使い方としては、こんな感じ。end}一応、標準のActiveRecord::Base.transactionに対する下方互換性は持っているのだけれども、完全に変わりに使うには何かと問題があるので上書きはしていない。:partially_commitable_transactionendとかしてくださいな。お断りとしては「重要な機能には使わないでください。2.0では無くなるかもしれない機能だし。Continuationによる再突入を想定していないC言語拡張ライブラリなんかがコールスタックに載ってると恐ろしい。ネイティブスレッドとの相性も最悪と思われる。コミット後に別のTransactionを開始しておいて元のものと偽るという荒業そのDBMSのConnectionAdapterがローカル変数になんか情報を保存しているとアウトかも。Rails標準のMysqlコネクタや、postgresql-prではとりあえず動いた。私ゃ確かに、このテクニックを商売用のコードで使ったけれども、それは「たとえ落ちても、プロセスIDさえ分かっていればrecover可能な、重要性も低い短命なプロセス」だったからで。いうのとか、せいぜいがMigrationによるデータ投入に使うとか、そういうのがおすすめ。あとで、subversionリポジトリにも上げとく。月別アーカイブはてなブログをはじめよう!yuguiさんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。