Project

General

Profile

Actions

Defect #4188

closed

gantt.rhtml doesn't correctly handle nil values

Added by Marcus Fellinger over 15 years ago. Updated over 15 years ago.

Status:
Closed
Priority:
Normal
Assignee:
-
Category:
UI
Target version:
-
Start date:
2009-11-09
Due date:
% Done:

0%

Estimated time:
Resolution:
Wont fix
Affected version:

Description

Method due_before in app/models/issue.rb can return nil.

app/views/gantt.rhtml doesn't handle this case correctly, instead exiting with the following error:

ActionView::TemplateError (undefined method `<=' for nil:NilClass) on line #184 of issues/gantt.rhtml

This can happen if an issue has a due_date of 0000-00-00 and no fixed_version.

Environment information:

Database Version         mysql  Ver 14.12 Distrib 5.0.67, for suse-linux-gnu (x86_64) using readline 5.2
Ruby version             1.8.7 (x86_64-linux)
Rails version            2.1.2

Error log entry:

ActionView::TemplateError (undefined method `<=' for nil:NilClass) on line #184 of issues/gantt.rhtml:
181: @gantt.events.each do |i|
182:   if i.is_a? Issue
183:    i_start_date = (i.start_date >= @gantt.date_from ? i.start_date : @gantt.date_from )
184:    i_end_date = (i.due_before <= @gantt.date_to ? i.due_before : @gantt.date_to )
185:
186:    i_done_date = i.start_date + ((i.due_before - i.start_date+1)*i.done_ratio/100).floor
187:    i_done_date = (i_done_date <= @gantt.date_from ? @gantt.date_from : i_done_date )

    app/views/issues/gantt.rhtml:184:in `_run_erb_47app47views47issues47gantt46rhtml'
    app/views/issues/gantt.rhtml:181:in `each'
    app/views/issues/gantt.rhtml:181:in `_run_erb_47app47views47issues47gantt46rhtml'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `send'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:342:in `execute'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `send'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template_handlers/compilable.rb:29:in `render'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:35:in `render'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/template.rb:22:in `render_template'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_view/base.rb:248:in `render_file'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1112:in `render_for_file'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:872:in `render_with_no_layout'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/layout.rb:251:in `render_without_benchmark'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:51:in `render'
    /usr/lib64/ruby/gems/1.8/gems/activesupport-2.1.2/lib/active_support/core_ext/benchmark.rb:8:in `realtime'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:51:in `render'
    app/controllers/issues_controller.rb:355:in `gantt'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:131:in `call'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:131:in `custom'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:160:in `call'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:160:in `respond'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:154:in `each'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:154:in `respond'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/mime_responds.rb:107:in `respond_to'
    app/controllers/issues_controller.rb:354:in `gantt'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1166:in `send'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:1166:in `perform_action_without_filters'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:579:in `call_filters'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:572:in `perform_action_without_benchmark'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /usr/lib64/ruby/1.8/benchmark.rb:293:in `measure'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/benchmarking.rb:68:in `perform_action_without_rescue'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/rescue.rb:201:in `perform_action_without_caching'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/caching/sql_cache.rb:13:in `perform_action'
    /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/connection_adapters/abstract/query_cache.rb:33:in `cache'
    /usr/lib64/ruby/gems/1.8/gems/activerecord-2.1.2/lib/active_record/query_cache.rb:8:in `cache'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/caching/sql_cache.rb:12:in `perform_action'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:529:in `send'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:529:in `process_without_filters'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/filters.rb:568:in `process_without_session_management_support'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/session_management.rb:130:in `process'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/base.rb:389:in `process'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:149:in `handle_request'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:107:in `dispatch'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in `synchronize'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:104:in `dispatch'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:120:in `dispatch_cgi'
    /usr/lib64/ruby/gems/1.8/gems/actionpack-2.1.2/lib/action_controller/dispatcher.rb:35:in `dispatch'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:103:in `process_request'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:153:in `with_signal_handler'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:101:in `process_request'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:78:in `process_each_request'
    /usr/lib64/ruby/vendor_ruby/1.8/fcgi.rb:612:in `each_cgi'
    /usr/lib64/ruby/vendor_ruby/1.8/fcgi.rb:609:in `each'
    /usr/lib64/ruby/vendor_ruby/1.8/fcgi.rb:609:in `each_cgi'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:77:in `process_each_request'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:76:in `catch'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:76:in `process_each_request'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:50:in `process!'
    /usr/lib64/ruby/gems/1.8/gems/rails-2.1.2/lib/fcgi_handler.rb:24:in `process!'
    public/dispatch.fcgi:24

Rendering /srv/www/vhosts/redmine-0.8/public/500.html (500 Internal Server Error)

Actions

Also available in: Atom PDF