Сервер Ruby on Rails не отражает изменения в записях базы данных до перезапуска

Если я открою консоль Rails и создам новый виджет:

>> widget = Widget.new
>> widget.name = "Whatever"
>> widget.save

Виджет сохраняется без ошибок. Однако, когда я запускаю:

>> Widget.all

Этот новый виджет не отображается в возвращаемом списке записей. Однако, если я перезапущу консоль Rails и снова запущу ту же команду:

>> Widget.all

Виджет теперь отображается в списке записей. Почему это происходит? У меня такая же проблема с сервером Rails; если я создаю или редактирую виджет с сгенерированными шаблонными представлениями, эти виджеты не отображаются в представлении шоу, пока я не перезапущу сервер Rails.

Кстати, у меня Windows 7, я использую RubyMine в качестве IDE и использую rails 3.2.4 и sqlite3.


person Evan    schedule 25.01.2013    source источник
comment
Пожалуйста, предоставьте информацию о вашей системе базы данных   -  person MrYoshiji    schedule 25.01.2013
comment
Кстати, у меня Windows 7, я использую RubyMine в качестве IDE и использую rails 3.2.4 и sqlite3.   -  person Evan    schedule 25.01.2013
comment
Не связанный с вашим вопросом: вам следует немедленно обновиться до rails 3.2.11. 3.2.4 содержит известные уязвимости безопасности.   -  person Daniel Evans    schedule 25.01.2013
comment
Спасибо, Даниил! Я сделаю это.   -  person Evan    schedule 25.01.2013
comment
Можете ли вы попробовать puts ActiveRecord::Base.connection.execute("SELECT * FROM widgets") в своей консоли?   -  person MrYoshiji    schedule 25.01.2013
comment
Хорошо, я не знаю почему, но обновление до rails 3.2.11 (по совету Даниэля выше) и запуск обновления пакета теперь остановили это явление. Итак, спасибо всем!   -  person Evan    schedule 25.01.2013


Ответы (1)


Один из комментаторов выше порекомендовал мне обновиться до версии 3.2.11. Я обновил версию в своем Gemfile и запустил bundle update, и это решило проблему. Я не знаю, какой драгоценный камень или их комбинация были проблемой до обновления.

person Evan    schedule 25.01.2013
comment
В Rails 3.2.4 была регрессия, которая случайно кэшировала вызовы .all - person Frederick Cheung; 26.01.2013