Я управляю Redmine (2.3.2.stable.231, rails 3.2.13) с помощью некоторых пользовательских скриптов, и он работал очень хорошо. Однако в последнее время, когда мой сценарий пытается уничтожить проблему с помощью Redmine API, он получает (только иногда, не каждый раз) HTTP 500 из-за:"undefined method` [] 'for nil: NilClass "while super
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 :: Base) является
158 def create_or_update
159 super
160 ensure
161 @status_was = nil
162 end
163 private :create_or_update
Я не могу видеть [] использование оператора в строке 159, ни другой вызов функции на TRACEBACK, так как это возможно? Я что-то пропустил в супер-рубине? Как отслеживать его дальше?
'super' вызовет метод' create_or_update' в родительском классе 'Issue' (? - Я думаю, что это класс' Issue'.) – mudasobwa
Будет ли это? В этом нет ничего о трагедии. В любом случае, я проверил его, и ActiveRecord :: Base, похоже, не использует оператор [] либо [link] (http://apidock.com/rails/ActiveRecord/Base/create_or_update) – fernando
Состояние гонок? Я бы предположил, что сам экземпляр отсутствует, когда он достигает строки ** super **. Много ли это происходит? – froderik