как перезагрузить модель в консоли rails?

> 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?

Нужно ли что-то сделать с отладчиком, чтобы он увидел перезагруженный код? Похоже на баг...

7
задан Community 23 May 2017 в 12:34
поделиться