我用一些自定义脚本管理Redmine(2.3.2.stable.231,rails 3.2.13),它用得很好。最近然而,当我的脚本试图通过管理平台API破坏的问题,它会因为(只是偶尔,不是每次)HTTP 500:“undefined方法`[]'为零:NilClass”而超级
NoMethodError (undefined method `[]' for nil:NilClass):
app/models/issue.rb:159:in `create_or_update'
app/models/issue.rb:1347:in `recalculate_attributes_for'
app/models/issue.rb:1311:in `update_parent_attributes'
app/models/issue.rb:173:in `destroy'
app/controllers/issues_controller.rb:313:in `block in destroy'
app/controllers/issues_controller.rb:311:in `each'
app/controllers/issues_controller.rb:311:in `destroy'
这是因为继承当然的issue.rb(问题类相当惊人从ActiveRecord的::基地)是
158 def create_or_update
159 super
160 ensure
161 @status_was = nil
162 end
163 private :create_or_update
我看不到线159任意[]操作符的使用,无论是在回溯另一个函数调用,所以这怎么可能?我错过了关于红宝石的超级?我如何进一步追踪它?
'super'会在'Issue'的父类上调用'create_or_update'方法(? - 我猜这是'Issue'类) – mudasobwa 2015-02-09 10:57:49
会吗?追踪上没有关于它的信息。无论如何,我检查了它,并且ActiveRecord :: Base似乎不使用[]运算符[link](http://apidock.com/rails/ActiveRecord/Base/create_or_update) – fernando 2015-02-09 11:06:04
Racing condition?我猜想当它到达** super **行时,实例本身已经消失。这是一个多线程的事情吗? – froderik 2015-02-09 13:36:20