Ray Konsolu: yeniden yükleyin! model dosyalarındaki değişiklikleri yansıtmıyor mu? Olası sebep ne olabilir?


95

Daha önce iyi çalışıyordu. Biraz config oynuyorum. Bilmeden bazı yapılandırmaları değiştirmiş olabilirim.

Burada environment / development.rb yapılandırması

  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'

İşte application.rb'nin yapılandırma bölümü

 # 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

yeniden yükle çalıştırdığımda! raylar konsolunda, doğruya dönüyor

Yanıtlar:


181

reload!yalnızca konsol ortamındaki en son kodu yeniden yükler. Mevcut nesneleri yeniden başlatmaz.

Bu, herhangi bir nesnenin örneğini zaten oluşturduysanız, niteliklerinin - yeni tanıtılan doğrulamalar dahil - güncellenmeyeceği anlamına gelir. Bununla birlikte, yeni bir nesne oluşturursanız, öznitelikleri (ve ayrıca doğrulamaları) yeniden yüklenen kodu yansıtacaktır. Daha fazla burada


Özel doğrulama ne olacak? Bazı yöntemler tanımladım ve validate ile kayıt oldum. Doğrulama mantığını değiştirdiğimde, yeniden yüklemeye yansımıyor !.
Maddy.Shik

2
Nesneyi yeniden başlattığınızda yansıtacaktır.
Nazar Hussain

20

Nesneyi veritabanından yeniden mi yüklüyorsunuz?

Örneğin:

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

'a', siz onu db'den yeniden yükleyene kadar modelinizdeki herhangi bir değişikliği yansıtmayacaktır.


1
Not - Bu, bir nesne üzerindeki bir yönteme erişirken bile geçerlidir. Örneğin, foo () sınıf yönteminin tanımını değiştirirseniz, konsolda a.foo, siz önce a.
jpw
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.