Обновление с Rails 3.1 до 3.2 получает NoMethodError для unserializable_attribute ?, используя JRuby, Oracle и двоичные данные - PullRequest
2 голосов
/ 10 февраля 2012

У меня есть простое приложение Rails 3.1 CRUD, созданное с использованием Oracle, работающее на JRuby. Класс модели имеет атрибут с двоичными данными, хранящимися в столбце BLOB-объектов Oracle.

Все хорошо работает на 3.1, но при запуске с Rails 3.2 выдает NoMethodError в поисках unserializable_attribute ?. Я могу вернуться к 3.2, не меняя ничего другого, так что это довольно явно связано с изменением версии rails.

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. Но этот метод больше не существует в версии 3.2 read.rb.

Так что я предполагаю, что activerecord-jdbc-adapter нужны некоторые изменения для работы с изменениями в Rails 3.2.

Кто-нибудь еще сталкивался с этим? или есть предложение, как решить?

1 Ответ

4 голосов
/ 10 февраля 2012

Оказывается, об этой ошибке сообщалось на активном сайте gjub recordjdbc-adapter, исправленной, но еще не выпущенной в качестве новой версии для ruby ​​gems.

Если у вас есть приложение rails, которое использует jdbc для подключения к базе данных, и у вас есть BLOB-объекты в любой из ваших таблиц, вы можете подождать обновления до выпуска обновленного адаптера.

В качестве альтернативы, если вы не хотите ждать, вы можете применить прямое исправление, опубликованное на сайте gitub activerecordjdbc-adapter.Это довольно просто по своей сути;просто найдите вызов: unserializable_attribute? (c.name, c) и замените его значением value.is_a? (Hash)

...