2013-08-07 26 views
2

我正在使用spork運行測試,沒有問題,但是,偶爾我必須重新啓動spork服務器才能識別新添加的路由。在此之際,我重新啓動服務器叉勺,現在我收到以下錯誤消息,每當我運行任何測試:重新啓動spork服務器後未定義的方法'instantiate_observers'錯誤

Exception encountered: #<NoMethodError: undefined method `instantiate_observers' for ActiveRecord::Base:Class> 
backtrace: 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/activerecord-4.0.0/lib/active_record/dynamic_matchers.rb:22:in `method_missing' 
/Users/mydocs/Documents/rails_projects/sample_app_rails_4/spec/spec_helper.rb:56:in `block in <top (required)>' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork.rb:69:in `call' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork.rb:69:in `block in exec_each_run' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork.rb:69:in `each' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork.rb:69:in `exec_each_run' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/run_strategy/forking.rb:12:in `block in run' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/forker.rb:21:in `block in initialize' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/forker.rb:18:in `fork' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/forker.rb:18:in `initialize' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/run_strategy/forking.rb:9:in `new' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/run_strategy/forking.rb:9:in `run' 
/Users/mydocs/.rvm/gems/[email protected]_rails_4_0/gems/spork-1.0.0rc3/lib/spork/server.rb:48:in `run' 
/Users/mydocs/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/drb/drb.rb:1588:in `perform_without_block' 
/Users/mydocs/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/drb/drb.rb:1548:in `perform' 
/Users/mydocs/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/drb/drb.rb:1626:in `block (2 levels) in main_loop' 
/Users/mydocs/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/drb/drb.rb:1622:in `loop' 
/Users/mydocs/.rvm/rubies/ruby-2.0.0-p247/lib/ruby/2.0.0/drb/drb.rb:1622:in `block in main_loop' 

的叉勺服務器的附加重啓沒有改變任何東西。任何想法可能會導致此/如何解決它?由於

編輯:從spec_helper.rb增加了代碼

Spork.each_run do 
    ActiveSupport::Dependencies.clear 
    ActiveRecord::Base.instantiate_observers <--- This is line 56 

    load "#{Rails.root}/config/routes.rb" 
    Dir["#{Rails.root}/app/**/*.rb"].each { |f| load f } 
end if Spork.using_spork? 

加入該塊,這樣我就不再需要重啓服務器叉勺,以使其接受更改路線,但是,我今天早些時候做出了這一改變,並從那時起成功運行了很多測試。

+1

錯誤發生在這裏:'spec/spec_helper.rb:56'。這一行是什麼?爲什麼在那條線上?它的用途是什麼? –

+0

謝謝@RyanBigg,我已將第56行的代碼添加到上面的問題中。 – jackerman09

+0

@RyanBigg,評論說該部分有訣竅,但我希望能夠包含該代碼以防止需要重新啓動spork。有什麼想法嗎?再次感謝 – jackerman09

回答

3

觀察者被從Rails中刪除4.嘗試實例化他們將無法正常工作。你有的代碼示例可能來自Rails 3.

刪除該行。什麼壞事都會發生。

相關問題