> rvm list
rvm rubies
=* ruby-1.9.2-p290 [ i686 ]
ruby-1.9.3-p194 [ i686 ]
> rails -v
Rails 3.1.1
Связанные, но не ответил: Is there a Rails Console command (Rails 3+) to reload changed code?Как перезагрузить модель в консоли 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
.
Каков наилучший способ перезагрузить модель в консоли рельсов? Должен ли я перезапускать консоль каждый раз, когда меняет код модели? Есть ли способ просто сбрасывать все существующие модели и их код без перезагрузки консоли?
Редактировать: это стало странным. Я теперь подозреваю, что мой код перезагружается, но отладчик не отражает новый код. Когда я просматриваю код, там находится старый код, но выполняется новый код. Я проверил это, добавив raise
- raise
никогда не отображается в отладчике, но он поднят. Wat?
Есть ли что-то, что мне нужно для работы с отладчиком, чтобы получить его, чтобы увидеть перезагруженный код? Это выглядит как ошибка ...
Вы пытаетесь вызвать метод для самого класса или экземпляра класса? –
экземпляр @ChrisSchmitz класса; Я читаю об использовании себя и возиться с кодом, пока не пойму. – jcollum
Существует несколько различных отладчиков для Ruby, было бы полезно указать, какой из них вы используете. –