Как разделить класс наблюдателя datamapper в другой файл из класса модели? - PullRequest
0 голосов
/ 20 июля 2010

Я сталкиваюсь с ошибкой, когда пытаюсь разделить класс dm-наблюдателя на отдельный файл из моего класса модели. Раньше все работало нормально, если поместить все это в один файл.

# test_observer.rb
require 'dm-observer'

class TestObserver
  include DataMapper::Observer
  observe Test 

  before :create do
      # does funky stuff
  end 
end 

# test.rb  
require 'dm-core'
require File.dirname(__FILE__) + '/test_observer'

class Test
  include DataMapper::Resource

  property :id, Serial
  property :name, String
  property :state, Integer
end

Каждый раз, когда мне требуется класс Test, я сталкиваюсь с ошибкой:

uninitialized constant TestObserver::Test (NameError)

Я не уверен, почему TestObserver :: добавляется к имени класса. У меня такое чувство, что я не помещаю требования в нужных местах, но я попробовал все, и это все равно не будет играть хорошо. Буду признателен за любую помощь в этом.

Спасибо!

1 Ответ

1 голос
/ 20 июля 2010

Вам требуется test.rb, который требует test_observer до того, как объявлен тестовый класс.Вы должны удалить эту строку:

require File.dirname(__FILE__) + '/test_observer'

и требовать файлы в следующем порядке:

require 'test'

require 'test_observer'

...