Как мне перейти с Ruby 1.8.7 на Ruby 1.9.2 для приложения Rails 2.3.8?

Я искал везде и не могу найти никого с такой же проблемой.

Я тестирую обновление большого приложения Rails под управлением Rails 2.3.8 с Ruby 1.9.2 с использованием rvm и nginx+passenger (в настоящее время работает на 1.8.7 в производстве).

Я использую гем mysql2, и моя база данных использует кодировку UTF-8. Когда я вхожу в приложение (стандартный restful-auth), поиск в базе данных находит совпадение, но когда контроллер пытается сохранить изменение атрибута в модели пользователя, он вызывает ошибку проверки из validates_length_of.

Я добавил некоторые отладочные данные в ActiveRecord, и похоже, что он считает, что все строковые значения моей записи базы данных пусты (отображаются как «[]» в журналах...)

Я видел такое же поведение в скрипте/консоли: User.first.login => "[]", но оно было исправлено после переключения на гем mysql2 (и обновления значения адаптера database.yml).

Почему консоль работает, а через сайт нет? Ошибка ActionController/ActiveSupport??

Уточнение: это стабильное приложение, которое работает более 1 года в версии 1.8.7 с сотнями спецификаций.


person simianarmy    schedule 29.09.2011    source источник
comment
Проверьте журналы, когда отправка формы завершена, посмотрите, правильно ли все передается. Если вы видите, что значения в консоли отображаются, но возникают ошибки при попытке сохранить запись после передачи ей хэша, это вполне может быть проблемой.   -  person agmcleod    schedule 30.09.2011
comment
Это зрелое, хорошо протестированное приложение, поэтому, боюсь, нет простых решений. Эта проблема уникальна для использования Ruby ›= 1.9, так как почти все остальное в кодовой базе не изменилось.   -  person simianarmy    schedule 30.09.2011
comment
Работает: OS X Lion, Ruby ree-1.8.7-2011.03, nginx/1.0.5, пассажир 3.0.8, Rails 2.3.8   -  person simianarmy    schedule 30.09.2011


Ответы (1)


Решение состояло в том, чтобы отключить плагин xss_terminate.

Это старо, но было весьма полезно для меня, чтобы иметь дело с различными типами пользовательского ввода и ролями.

person simianarmy    schedule 30.09.2011