2012-02-10 1 views
2

JRubyで動作するOracleを使用して構築された単純なRails 3.1 CRUDアプリケーションがあります。モデルクラスには、Oracle blobカラムにバイナリデータが格納された属性があります。JRuby、Oracle、およびバイナリデータを使用して、Rails 3.1から3.2へのアップグレードでunserializable_attribute?がNoMethodErrorになる

すべては3.1でもうまくいきますが、Rails 3.2で実行すると、unserializable_attribute?を探すNoMethodErrorがスローされます。私は他のものを変更することなく3.2に戻ることができるので、レールバージョンの変更に関連するかなり明確なものです。

unserializable_attribute?ファイルから呼び出されます。activerecord-jdbc-adapter-1.2.2/lib/arjdbc/oracle/adaptor.rb

ソースをグリッピングすると、unserializable_attributeメソッドが呼び出されますか? activerecord-3.1.3/lib/active_record/attribute_methods/read.rbで定義されているようです。しかし、このメソッドはread.rbの3.2バージョンには存在しません。

私は、activerecord-jdbc-adapterにRails 3.2の変更を適用するにはいくつかの変更が必要であると推測しています。

他に実行している人は誰ですか?解決する方法の提案がありますか?

答えて

4

このバグは、active recordjdbc-adapter githubサイトで報告されましたが、修正されましたが、まだルビーの新しいバージョンとしてリリースされていません。

jdbcを使用してデータベースに接続するレールアプリがあり、テーブルにBLOBがある場合は、更新されたアダプタがリリースされるまで待つことをお勧めします。

また、待機したくない場合は、activerecordjdbc-adapter githubサイトに投稿された簡単な修正を適用できます。それはコアでかなりシンプルです。 unserializable_attribute?(c.name、c)の呼び出しを見つけ、value.is_a?(ハッシュ)に置き換えてください。

+0

https://github.com/jruby/activerecord-jdbc-adapter/pull/167 – David

+0

セブン月とまだリリースはありません...一息。 – sevenseacat

+0

@ Karpieら、Oracle拡張アダプタhttps://github.com/rsim/oracle-enhancedに切り替えました。まだBLOBSでテストしていないが、それはかなり良いし、積極的な修正を得ている。 –