Перезагрузить консоль рельсов
Что касается использования консоли Rails, когда я делаю некоторые изменения в модели, мне нужно каждый раз перезагружать консоль рельсов, чтобы отразить это изменение?
Например, у меня есть исходный код:
class Article < ActiveRecord::Base
validates :title, :presence => true
validates :body, :presence => true
end
Позже я хочу добавить дополнительный атрибут, как показано ниже.
class Article < ActiveRecord::Base
validates :title, :presence => true
validates :body, :presence => true
def long_title
"#{title} - #{published_at}"
end
end
Нужно ли запускать команду "перезагрузить!" каждый раз, когда вы можете выполнить вызов метода long_title? В противном случае я получаю сообщение об ошибке, поскольку атрибут не определен. и для чего нужно выполнить это вручную?
Ответы
Ответ 1
Да, вам нужно вызвать reload!
, так как это очистит загруженные константы, которые были загружены, и загрузит их, как они указаны в консоли.
Если у вас есть старые объекты до reload!
, вам нужно будет вызвать reload
на этих отдельных объектах или найти новые объекты и работать с ними, если вы хотите попробовать новый метод.
В качестве альтернативы я бы действительно рекомендовал изучить структуру тестирования, такую как RSpec, которая дает вам повторяемые тесты и защитную сетку для вашего приложения.
Похоже, вы пытаетесь использовать консоль в качестве инструмента тестирования для новых функций в своем приложении, что и подходит RSpec. Консоль действительно хороша для экспериментов.
Ответ 2
rails console
не перезагружает классы после ссылки.
Если бы это было сделано, нужно было бы обратиться в файловую систему, чтобы выяснить, какие файлы были изменены для каждой команды.
rails server
, с другой стороны, перезагрузит измененные классы между запросами в режиме разработки.
Я предполагаю, что вы держите консоль открытой из-за времени запуска rails console
. Я не уверен, что ваше приложение, и я не уверен, почему консоль открыта во время разработки. Однако, если вы пытаетесь проверить изменения, я могу рекомендовать тестирование с помощью unit test или rspec
, и в этот момент вы можете использовать spork для ускорения времени запуска.