私はペーパークリップを使用して鉱山のモデルにファイルを添付しています。私がしたいのは、モデルが保存され、ファイルがディスクに書き込まれた後、ファイルに関する別の属性(CRC)を更新する必要があるということです。 paperclipは.saveが呼び出されるまで、ファイルをディスクに書き込まないので、私の最初の考えはafter_saveコールバックを使用することでした。私がこれを行うと、私は "SystemStackError(スタックレベルが深すぎる):"エラーが発生します。それから、少しうまく動いているように思えるafter_commitコールバックを試みました。たとえば、私は単純に自分のcrcを割り当てる:保存後にレコードを更新するタイミングは?
self.crc = "TEST"
self.save
これは動作します。しかし、私はこれで、私の本当の割り当てを実行しようとした場合:
self.crc = "0x" + IO.read(self.patchfile.path, 4, 0x20).unpack("H8").join
self.save
WEBrickにはして中止します:
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9(+0x180048) [0x290048]
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9(rb_yield+0x56) [0x294c46]
[NOTE]
You may have encountered a bug in the Ruby interpreter or extension libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html
Aborted
だから私は、私はこの間違ったをやって考えています...
私は、WEBrickを殺すが実際には動作することを言及する必要があります。再起動すると、CRC属性が正しく設定されます。また、上記のエラーには、さらに多くのものがあり、私はちょうど最後を投稿しました。 –