Ruby 如何将datamapper observer类与model类分离到不同的文件中?

Ruby 如何将datamapper observer类与model类分离到不同的文件中?,ruby,model,datamapper,observer-pattern,Ruby,Model,Datamapper,Observer Pattern,当我试图将dm observer类从模型类拆分为一个单独的文件时,我遇到了一个错误。以前,如果我把它全部放在一个文件中,它工作得很好 # test_observer.rb require 'dm-observer' class TestObserver include DataMapper::Observer observe Test before :create do # does funky stuff end end # test.rb requ

当我试图将dm observer类从模型类拆分为一个单独的文件时,我遇到了一个错误。以前,如果我把它全部放在一个文件中,它工作得很好

# 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
每次我需要测试类时,都会遇到以下错误:

uninitialized constant TestObserver::Test (NameError)
我不确定为什么TestObserver::在类名前面。我有一种感觉,我没有把要求放在正确的地方,但我已经尝试了一切,它仍然不会发挥好。如果您能在这方面提供帮助,我将不胜感激


谢谢

您需要test.rb,它在声明测试类之前需要test\u observer。您应该删除此行:

require File.dirname(\uuuuu File\uuuuu)+'/test\u observer'

并按该顺序要求文件:

需要“测试”


需要“测试观察者”

再次感谢solnic!这很有效。是否有任何方法可以将require for test_observer转换为test.rb,这样我就不必担心每次使用test类时都需要observer类?