0

最近,我们发现在运行某些报告(项目状态或需求覆盖率)时,报告会失败并显示一个弹出窗口:

nil:NilClass 的未定义方法“[]”

检查httpd 访问日志,我看到以下内容:

“GET /report/requirement_coverage/?sort_by=id&test_object_ids=12 HTTP/1.1”403 38“ http://tarantula.xxxxx.xxxx/

在 production.log 文件中,我们还可以看到:

未定义的方法[]' for nil:NilClass /opt/tarantula/rails/lib/priority_extensions.rb:9:inpriority_name' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:115:in case_info' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:77:inblock (2 levels) in do_query' /opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems /activerecord-3.2.18/lib/active_record/associations/collection_proxy.rb:91:in each' /opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/associations/collection_proxy.rb:91:inmethod_missing' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:77:in block in do_query' /opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/relation/delegation.rb:6:ineach' /opt/tarantula/rails /vendor/bundle/ruby/1.9.1/gems/activerecord-3.2.18/lib/active_record/relation/delegation.rb:6:in each' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:66:indo_query'

在这下面还有很多:

/opt/tarantula/rails/vendor/bundle/ruby/1.9.1/gems/passenger-3.0.19/helper-scripts/passenger-spawn-server:99:in `' Completed 403 Forbidden in 113381.4ms (查看: 0.2毫秒 | 活动记录:7849.2 毫秒)

注意:这不是我的代码,而是来自 Testia Tarantula 模块的代码

=begin rdoc

Include this in a model which is to be prioritized.

 =end
 module PriorityExtensions

   def priority_name
     Project::Priorities.detect{|p| p[:value] == self.priority}[:name]
   end

   def priority=(p)
     if p.is_a? String
       p_val = Project::Priorities.detect{|pp| pp[:name] == p.downcase}
       if p_val
         self[:priority] = p_val[:value]
       else
         raise "Invalid priority '#{p}' for #{self.class} (id #{self.id})"
       end
     else
       self[:priority] = p
     end
   end

   def self.included(model)
     model.validates_inclusion_of :priority, :in =>           Project::Priorities.map{|p| p[:value]}
   end

 end
4

1 回答 1

0

发现问题,“cases”表中的“priority”列以某种方式更改为无效的 NULL。将值更改为“0”(正常)解决了这个问题。

于 2016-08-24T14:54:02.653 回答