我在測試Rails應用程序時遇到了以下問題。ActiveRecord對象無法在EventMachine回調中工作
使用EventMachine進行異步HTTP請求時,出於某種原因,我無法在回調中使用ActiveRecord對象。 每當我嘗試訪問我得到下面的異常對象:如果我從回調刪除ActiveRecord對象
/home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:144:in `create_time_zone_conversion_attribute?': You have a nil object when you didn't expect it! (NoMethodError)
You might have expected an instance of Array.
The error occurred while evaluating nil.include?
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:75:in `define_attribute_methods'
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:71:in `each'
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:71:in `define_attribute_methods'
from /home/user/.rvm/gems/ruby-1.8.7-p371/gems/activerecord-2.3.18/lib/active_record/attribute_methods.rb:257:in `method_missing'
,它工作正常。不幸的是,我真的需要他們可以訪問,所以刪除不是一種選擇。
如果我訪問讀取或寫入對象,沒關係。
我寫的代碼看起來是這樣的:
http = EM::HttpRequest.new(url).get(:query => query)
http.callback do
....
object.status = 'delivered'
object.save!
....
end
至於環境,我有以下設置:
- 的Ubuntu LTS 12.04
- 的Ruby 1.8.7-P371
- 導軌2.3.18
- 瘦服務器1.5.0
- ActiveRecord的2.3.18
- EventMachine的1.0.0
有誰知道什麼可能導致這個錯誤?如何解決這個問題?
在此先感謝!
你能告訴你如何得到'對象'? –