From: Daisuke Aoki Date: 2001-08-06T01:50:05+09:00 Subject: [ruby-list:30855] オブジェクトをソースへ This is a multi-part message in MIME format. --------------0A13B749726095FBBBF9D05E Content-Type: text/plain; charset=iso-2022-jp Content-Transfer-Encoding: 7bit 青木@横浜です。 1.6.4 と CVS の現在の Ruby で pstore(Marshal) の出力結果に互換性がないので しょうがなく、オブジェクトをソースへ変換するスクリプトを組んで(添付しました)、 対処しました。 以前の投稿で Marshal の問題が指摘されていたと思いますが、互換性のない db ファイルを 復活させる方法が紹介されていなかった(と思う)ので。 # require 'obj2src' orig = "orig.db" new = "new.db" require 'pstore' db = PStore.new(orig) db.transaction do print "require 'pstore'\n" printf "db = PStore.new(\"%s\")\n", new print "db.transaction do\n" printf "File.open(\"%s\",\"w\").close\n", new obj_to_src_out(db,"db") print "db.commit\n" print "end\n" end とかを古い Ruby で実行してやって、出力を新しい Ruby で実行すれば うまくいくと思います。pstore.rb の flock を外す必要があるかもしれません。 出力結果をみればわかりますがかなりいい加減です。 Object::inspect がもうちょっと高機能になって、eval 可能な出力を してくれたら面白いのになぁとか思いました。 # って、こういうことを実現しているスクリプトってすでにありそうな気がしますが # 私は知らないのでして。 -- 青木大輔 --------------0A13B749726095FBBBF9D05E Content-Type: application/octet-stream; name="obj2src.lzh" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="obj2src.lzh" RwAtbGg1LdgFAADREAAAvvlsOyACMk9NDQABb2JqMnNyYy5yYhsAQWAyGt3MHcEBALPgroId wQEA2FlMvx3BAQUAAAk5AAAEb2q99o21YvNIE9/xyUlgwhKgilNG6XNq3wNwW52UkhHr0+kn bS91e7udsNfBP8B22zNc5bqCIqUxg2XOERN4KzAptXUZsiO8CC4cZB22chX1//vvu7pJJZJd cGXwLnwIIvh29+8O/AV0DaxtqOMF9FtVgpIO1UXmFgwH8B/GyCzlVoD9fI2stpeWywpej5Qx +rJ5JYyytCFAfkJSxKTdLaUsOli0pwadKTRkUvODSzfq3vJDkh1qODAfvpFhD4Xyw0IlLGH9 nyiBp5vQDknSHG2QNIOdYUyDkECraYwae/2/B6pnIHGFbGDxQszr090HOzPd3/VDSp9gz/D3 g0aMcWB7PQp+qGiGeHDp9jfaOdlWmedhhUDjh8YfrT7HA+Af/roj+wAUtdtrWAbM/ENMmUwq s0Q8JcoOQhb4NPd/ZAf0dfjtDmTqMeOwwnuaMfy02Z5A4odQKodEOaHWswZ06MfVTzOcPhFS zw+QOLv5wfMHLFazyUfQiMZBA5gzj1BjWoLD3gkLamB5YGaBW+IZZGJvzDh0cHZK5JaMfyU2 h/cNWgW/v8dpMZJ0RiHQDhmDQOmHzhzuFn+vz957hysUoJssk3mgIUcQOkLY5YowtMRy++jH O4TLXKGJagdRyLeiP36Tr3mJsMz0xLPjB8QxmIE0lx0IbSluqXsb3oBVzfuzPtO1OOYhw/IW VpC3jswxVZ4ydzRzBDoVzpIGzO9rO0zBL4kWLfRIvjxIvim9SEztmH1iNFQPwPoWRBNSjg8C qFUmM3kbkQ8JlMtLjsCF6VLWtQXc+UbYYKY3Hk/N9vfesHMD3xgHinhaqProBV9fn5m7Q6zu moH6ByDME2hIPoNE8Yq0w0W69Yu3luaSJazeSSMSKOK1k5T2LPKnMKwOQkOClAfzCzSV1W9P p7uMfw4xL4XkwVpthYk1djJTavUrxm8mJQ9VvQ7bAFquREZ3sn1E2KAZLev13dxGsQ4RWa8k GSTJAsEUStCI+kFJ5nusuIVNSfLUnpsEmLky1MsZMIRRNkpFDCVt55ViYEE3khpa7XEgyZMm DBrZsmTczpMFGg0tBktnMO1DziOYb+fOZCUGSskbFcEqQ5FEMc+VZCSeO5/9wifInhJL/Qtd gSyFvp+oMI2AwfHfIwEm3Qaloc1qtlEczITpAC07apIvpVfNrPF1bjXjNh7w7rAiyjt8+PQV ZaGBpEqwZ5zK2xdzD9JOg2XLQRQ+92MxxISM5yD3EVyJCEOwbqufGtLLyS8t1ogHOkOtmLKh 1kqLKlVtBLyfWkRVGo+4Fki8ZlDCNsKlTN0f2+QEKGt3NKCZq+//6UZErU0okcff7GKq4Xqt 0g1bQ/q2R7rtd7Li1xrrZ/9DYb1uDT/wwanDXuU0z0bjTse3RENli1j0XEkXnEjwy46LtSWv ujQqmvh2VO3Q0uKJ7/llSuaFrinit5JWFVBBdLEWaLOKwbywVZw12DeOGruHfGgum0kgmv8r g61cO2RBg2NEbmgztEWQiIw2TDZdgYY+/BTQs25rQ/mAsNMbCXggOaZnd2BMVWh4ICHL7sAY ya04vffp2TEFZvbyZDN8ZhXdEE1VhlpHkM7OeJdwpQbmFljuowCYBEjGckS/IkcU0v7kcdem 4yu9JC+U0qusyjjDHpvzSY3m4Pny9nhY2PibHFNrSmk8geK5E8ZHA/rKJo7c9T8Ex7gxOoQ8 ZNEL39/ieVi7HGwthHx8JyB4hqNc1ehMwHuEQ+r133w0zBWZbK7bChe1fjRlwnVgajltTerC 9mwIiGkFizDIJZEuFncaBrazkvILzbG7HhxQMXQ/xi5eyP4LtwMndJ6XeL89ahxMt1uEcDZh VPIoFdK9VZlpNYZMeyK4fatN92MXnPC1GvduQjpDN2u9R3lHg1vXKUIWrdJHzeQnbpziScy/ CfasWRNaserDrLR+NRrLVmHzyMvlyVpLTzSHUz3Gu5q97Zymzta8L2+612dd9i3sju6ugq42 wAA= --------------0A13B749726095FBBBF9D05E--