Каковы причины "перезагрузки!" не всегда работает в консоли Rails?
Я просто получаю консоль Rails и считаю ее полезной для быстрого тестирования методов в моих классах. Я знаю, что могу внести изменения в свои модели, а затем
> reload!
чтобы получить эти обновления, но иногда я обнаруживаю, что он, похоже, не перезагружает мой последний код. Есть ли код кеша Rails?
В действительно простом псевдо-примере у меня может быть неправильный код в строке 100:
100: u = User.alll
и в консоли Rails, когда я запускаю этот метод, я могу получить ошибку, похожую на:
NoMethodError: undefined method `alll' for User:Class ... on line 100
затем измените мой код, исправив ошибку
100: u = User.all
затем перезагрузите:
> reload!
а затем при вызове метода в этом классе, который имеет правильный код, он все равно скажет
NoMethodError: undefined method `alll' for User:Class ... on line 100
Если ясно, что ошибка исправлена, а строка нарушения даже не указана в строке 100. Есть ли способ заставить /hard - reset "перезагрузить!" команда?
Ответы
Ответ 1
Я предполагаю, что вы делаете что-то вроде:
- Создайте экземпляр
User
- Вызов
someMethod
в экземпляре
- Вы получаете сообщение об ошибке, и вы идете и исправляете его.
-
reload!
- Вы вызываете
someMethod
в существующий экземпляр и снова получаете ошибку.
Итак, вы вызываете метод в экземпляре, который не был перезагружен. Его класс перезагружен, но экземпляр уже находится в памяти - с ошибками и всеми.
Это было бы мое предположение, по крайней мере (не на 100% уверен).
Точка, если вы создаете новый экземпляр после reload!
и вызываете свой метод в этом новом экземпляре, он должен прекратить жаловаться.