Релсови наблюдатели не стрелят понякога

Имам модел за наблюдение на снимки на Rails, който се изпълнява след изтриване на снимка. Ако в албума няма останали снимки, албумът се отменя. Това работи през повечето време, но понякога не се задейства, оставяйки публикуван албум без снимки в него. Опитах да копирам проблема, но без резултат. Моят метод на наблюдател е следният:

def after_destroy(photo)
  album_photos = photo.photo_album.photos.published
  if album_photos.count > 0
    ...
  else
    photo.photo_album.update_attribute(:published, false)
  end
  expire_cache_for(photo)
end

FYI - наблюдателят за актуализиране/запазване на фотоалбум се задейства само ако промени публикувания си статус на вярно, така че нищо не се случва там. Многократно се опитвах да репликирам това, но безуспешно. Няма 500 грешки и относно това изтриване. Моля, обърнете внимание, че използвам Passenger и снимките ми се съхраняват в Amazon S3. Някаква идея как да продължите с отстраняването на грешки?


person modulaaron    schedule 23.05.2011    source източник


Отговори (2)


Опитайте да настроите програма за отстраняване на грешки или някои изрази за печат в това after_destroy обратно извикване. Може би има някакъв странен проблем с времето, когато .count все още не е 0, когато това бъде извикано, никога не се знае.

Предлагам ви да се потопите и да проверите отново всичко, което се изпълнява, понякога изглежда, че всичко е наред (и логично), освен ако не го проверите.

person Bitterzoet    schedule 23.05.2011

В моето производствено приложение също забелязвам, че наблюдателите понякога не стрелят. Не успях да го дублирам. Е, понякога се случва и по време на разработка, но обикновено съм сигурен, че е поради странно презареждане или проблеми с отложеното зареждане...

Rails 3, нали? Задали сте го във вашия application.rb? config.active_record.observers = [:my_observer]

Опитвам се с require_dependency 'my_observer' в горната част на моя application_controller също, за да видя дали ще помогне.

person Kevin    schedule 22.07.2011