> rvm list rvm rubies =* ruby-1.9.2-p290 [ i686 ] ruby-1.9.3-p194 [ i686 ] > rails -v Rails 3.1.1
Связано, но не ответил:Есть ли команда консоли Rails (Rails 3+ )для перезагрузки измененного кода?
Я использую консоль Rails, чтобы попытаться выяснить, почему метод в моей модели не вызывается. Модель находится в./app/models/product.rb. Я меняю метод с вызова
self.trim_history
наtrim_history
. Я все еще думаю, когда вызывать метод какself.do_stuff
или простоdo_stuff
.В процессе выяснения этого я столкнулся с проблемой
reload!
. Насколько я понял,reload!
снова загрузит все модели и контроллеры, но, похоже, это не работает. Когда я отлаживаю свой код, строка, которую я изменил наdo_stuff
, по-прежнему отображается какself.do_stuff
в отладчике.Я пытался решить эту проблему с помощью
reload!
, без исправления.Я перезагрузил объект из базы данных после перезагрузки, без исправления. Я загрузил модель напрямую с помощьюload './app/models/product.rb'
, затем загрузил объект из базы данных, без исправления. Я проверил, что объект изменяется с помощьюtail
.Как лучше всего перезагрузить модель в консоли rails? Нужно ли повторно -запускать консоль каждый раз при изменении кода моей модели? Есть ли способ просто сбросить все существующие модели и их код без перезагрузки консоли?
Редактировать:это стало странным. Теперь я подозреваю, что мой код перезагружается, но отладчик не отражает новый код. Когда я выполняю код, старый код присутствует, но выполняется новый код. Я проверил это, добавив
raise
--,raise
никогда не отображается в отладчике, но вызывается. Wat?Нужно ли что-то сделать с отладчиком, чтобы он увидел перезагруженный код? Похоже на баг...