Rails Console: перезагрузите! не отражают изменения в файлах модели? В чем может быть возможная причина?


95

Раньше все работало нормально. Я немного поиграл в конфиг. Так что, возможно, я неосознанно изменил какую-то конфигурацию.

вот конфиг окружения / development.rb

  config.cache_classes = false

  # Log error messages when you accidentally call methods on nil.
  config.whiny_nils = true

  # Show full error reports and disable caching
  config.consider_all_requests_local       = true
  config.action_view.debug_rjs             = true
  config.action_controller.perform_caching = false

  # Don't care if the mailer can't send
  config.action_mailer.raise_delivery_errors = false

  # Print deprecation notices to the Rails logger
  config.active_support.deprecation = :log

  # Only use best-standards-support built into browsers
  config.action_dispatch.best_standards_support = :builtin

  # migration prefix with sequence #s
  config.active_record.timestamped_migrations = false

  #time zone
  config.time_zone = 'UTC'

Вот конфигурационный раздел application.rb

 # Configure the default encoding used in templates for Ruby 1.9.
 config.encoding = "utf-8"

 # Configure sensitive parameters which will be filtered from the log file.
 config.filter_parameters += [:password]

 config.active_record.schema_format = :sql

когда я бегу перезагрузить! на рельсах консоли он возвращает истину

Ответы:


181

reload!перезагружает только последний код в среде консоли. Он не повторно инициализирует существующие объекты.

Это означает, что если вы уже создали какие-либо объекты, их атрибуты не будут обновлены, включая недавно введенные проверки. Однако, если вы создаете новый объект, его атрибуты (а также проверки) будут отражать перезагруженный код. подробнее здесь


А как насчет пользовательской проверки? Я определил несколько методов и зарегистрировался в validate. Когда я меняю логику проверки, это не отражается на перезагрузке !.
Maddy.Shik

2
Это отразится, когда вы повторно инициализируете объект.
Назар Хуссейн,

19

Вы перезагружаете объект из базы данных?

Например:

>> a = User.last
=> #<User id: 16, email: "asdfadsf@sdfdsf.com">
>> reload!
Reloading...
=> true

'a' не будет отражать никаких изменений в вашей модели, пока вы не перезагрузите ее из базы данных.


1
Примечание. Это верно даже при доступе к методу объекта. Например, если вы измените определение метода класса foo (), то в консоли a.foo не будет использовать новое определение, если вы сначала не перезагрузите файл.
jpw
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.