Rails-наблюдатель не запускается на начальных данных - PullRequest
1 голос
/ 26 февраля 2011

У меня проблема с получением наблюдателей для запуска при использовании начальных данных в моей базе данных разработки.

app / models / item_observer.rb:

require 'grit'

class ItemObserver < ActiveRecord::Observer

  def create(item)
    Grit::Repo.init_bare(item.repository_path)
    logger.debug "doneit"
  end
end

db / seed.rb:

admin_rank = UserRank.create!({
  :title => 'Administrator',
  :permissions => Marshal.dump(Hash.new)
})

admin = User.create!({
  :username => 'admin',
  :password => 'password',
  :user_rank => admin_rank
})

url_operators = Item.create!({
  :creator => admin,
  :title => 'test game/something #1?',
  :description => 'this is an example of a game entry!?\'"#<>... obviously.'
})

И в моем config / application.rb у меня есть строка:

config.active_record.observers =: item_observer

Почему метод создания наблюдателя не будетзапуск по граблям db: seed RAILS_ENV = разработка?Я могу создать Grit-репозиторий, вызвав Grit :: Repo.init_bare из ItemController.

(Кстати, моя версия rails 3.0.3).

Ответы [ 3 ]

2 голосов
/ 26 февраля 2011

не должно быть after_create вместо того, чтобы просто создавать в наблюдателе

require 'grit'

class ItemObserver < ActiveRecord::Observer

  def after_create(item)
    Grit::Repo.init_bare(item.repository_path)
    logger.debug "doneit"
  end
end
1 голос
/ 22 декабря 2011

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

 config.cache_classes = true
0 голосов
/ 18 апреля 2012

Также убедитесь, что у вас есть конфигурация config.active_record.observers = :item_observer, установленная в файле config / development.rb

...