Подтвердить что ты не робот

Перезагрузить консоль рельсов

Что касается использования консоли 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? В противном случае я получаю сообщение об ошибке, поскольку атрибут не определен. и для чего нужно выполнить это вручную?

4b9b3361

Ответ 1

Да, вам нужно вызвать reload!, так как это очистит загруженные константы, которые были загружены, и загрузит их, как они указаны в консоли.

Если у вас есть старые объекты до reload!, вам нужно будет вызвать reload на этих отдельных объектах или найти новые объекты и работать с ними, если вы хотите попробовать новый метод.

В качестве альтернативы я бы действительно рекомендовал изучить структуру тестирования, такую ​​как RSpec, которая дает вам повторяемые тесты и защитную сетку для вашего приложения.

Похоже, вы пытаетесь использовать консоль в качестве инструмента тестирования для новых функций в своем приложении, что и подходит RSpec. Консоль действительно хороша для экспериментов.

Ответ 2

rails console не перезагружает классы после ссылки.

Если бы это было сделано, нужно было бы обратиться в файловую систему, чтобы выяснить, какие файлы были изменены для каждой команды.

rails server, с другой стороны, перезагрузит измененные классы между запросами в режиме разработки.

Я предполагаю, что вы держите консоль открытой из-за времени запуска rails console. Я не уверен, что ваше приложение, и я не уверен, почему консоль открыта во время разработки. Однако, если вы пытаетесь проверить изменения, я могу рекомендовать тестирование с помощью unit test или rspec, и в этот момент вы можете использовать spork для ускорения времени запуска.