2012-02-10 3 views
2

JRuby에서 실행되는 Oracle을 사용하여 간단한 Rails 3.1 CRUD 앱을 구축했습니다. 모델 클래스에는 Oracle blob C 럼에 저장된 2 진 데이터가있는 속성이 있습니다.JRuby, Oracle 및 이진 데이터를 사용하여 Rails 3.1에서 3.2로 업그레이드하면 unserializable_attribute?에 NoMethodError가 발생합니다.

모두가 3.1에서 잘 작동하지만, 레일즈 3.2를 실행할 때 unserializable_attribute?를 찾는 NoMethodError가 발생합니다. 나는 3.2 버전으로 돌아가 다른 것을 바꾸지 않고 레일 버전의 변경과 관련된 명확한 것을 알 수있다.

unserializable_attribute? 파일에서 호출됩니다. activerecord-jdbc-adapter-1.2.2/lib/arjdbc/oracle/adaptor.rb

소스를 grepping 할 때 unserializable_attribute 메소드가 필요합니까? activerecord-3.1.3/lib/active_record/attribute_methods/read.rb에 정의 된 것으로 보입니다. 그러나이 방법은 3.2 버전의 read.rb에 더 이상 존재하지 않습니다.

그래서 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 외 여러분, 나는 오라클 강화한 접합기 https://github.com/rsim/oracle-enhanced에 전환했다. BLOBS로 아직 테스트하지 않았지만 꽤 좋으며 적극적인 수정을하고 있습니다. –