最近、特定のレポート (プロジェクト ステータスまたは要件カバレッジのいずれか) を実行すると、次のようなポップアップが表示されてレポートが失敗することがわかりました。
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 ファイルには、次のようにも表示されます。
undefined method []' for nil:NilClass
/opt/tarantula/rails/lib/priority_extensions.rb:9:in
priority_name' /opt/tarantula/rails/app/models/report/requirement_coverage.rb:115:incase_info'
/opt/tarantula/rails/app/models/report/requirement_coverage.rb:77:in
ブロック (2 レベル) 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:in
method_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:in
each' /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:in
do_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